Web Günlüğü

Blogger Son Tweetler Eklentisi

blogger son tweetler eklentisi 2021
Daha önce Twitter'daki son tweetleri blogger tabanlı bloglarımızda göstermek için, Twitter'ın yeni Api'si ile yapılmış olan fakat biraz karmaşık olan bir eklenti paylaşmıştım. Bir kaç gün önce yapımcının eklentiyi güncellemesiyle birlikte kodların çalışmadığını farkettim. Ayrıca güncelleme ile birlikte artık sadece twitter kullanıcı ismi ile son tweetleri göstermek daha kolay hale getirilmiş.

Kodları varsayılan yapısından daha sade hale getirerek ve yalın bir halde paylaştım. Gerekli CSS özelleştirmeleri isteğe göre yapılabilir. Jason Mayes'in hazırladığı eklentinin orijinal haline codepen.io/jasonmayes/pen/Ioype ulaşılabilir.

</head> öncesine eklenmesi gereken javascript kodları :
Javascript kodları şablona eklenirken blogger kod dönüştürücü aracı ile dönüştürülüp eklenmelidir.
<script>(function(root,factory){if(typeof define==='function'&&define.amd){define([],factory);}else if(typeof exports==='object'){module.exports=factory();}else{factory();}}(this,function(){var domNode='';var maxTweets=20;var parseLinks=true;var queue=[];var inProgress=false;var printTime=true;var printUser=true;var formatterFunction=null;var supportsClassName=true;var showRts=true;var customCallbackFunction=null;var showInteractionLinks=true;var showImages=false;var useEmoji=false;var targetBlank=true;var lang='en';var permalinks=true;var dataOnly=false;var script=null;var scriptAdded=false;function handleTweets(tweets){if(customCallbackFunction===null){var x=tweets.length;var n=0;var element=document.getElementById(domNode);var html='<ul>';while(n<x){html+='<li>'+tweets[n]+'</li>';n++;}
html+='</ul>';element.innerHTML=html;}else{customCallbackFunction(tweets);}}
function strip(data){return data.replace(/<b[^>]*>(.*?)<\/b>/gi,function(a,s){return s;}).replace(/class="(?!(tco-hidden|tco-display|tco-ellipsis))+.*?"|data-query-source=".*?"|dir=".*?"|rel=".*?"/gi,'');}
function targetLinksToNewWindow(el){var links=el.getElementsByTagName('a');for(var i=links.length-1;i>=0;i--){links[i].setAttribute('target','_blank');}}
function getElementsByClassName(node,classname){var a=[];var regex=new RegExp('(^| )'+classname+'( |$)');var elems=node.getElementsByTagName('*');for(var i=0,j=elems.length;i<j;i++){if(regex.test(elems[i].className)){a.push(elems[i]);}}
return a;}
function extractImageUrl(image_data){if(image_data!==undefined&&image_data.innerHTML.indexOf('data-srcset')>=0){var data_src=image_data.innerHTML.match(/data-srcset="([A-z0-9%_\.-]+)/i)[0];return decodeURIComponent(data_src).split('"')[1];}}
var twitterFetcher={fetch:function(config){if(config.maxTweets===undefined){config.maxTweets=20;}
if(config.enableLinks===undefined){config.enableLinks=true;}
if(config.showUser===undefined){config.showUser=true;}
if(config.showTime===undefined){config.showTime=true;}
if(config.dateFunction===undefined){config.dateFunction='default';}
if(config.showRetweet===undefined){config.showRetweet=true;}
if(config.customCallback===undefined){config.customCallback=null;}
if(config.showInteraction===undefined){config.showInteraction=true;}
if(config.showImages===undefined){config.showImages=false;}
if(config.useEmoji===undefined){config.useEmoji=false;}
if(config.linksInNewWindow===undefined){config.linksInNewWindow=true;}
if(config.showPermalinks===undefined){config.showPermalinks=true;}
if(config.dataOnly===undefined){config.dataOnly=false;}
if(inProgress){queue.push(config);}else{inProgress=true;domNode=config.domId;maxTweets=config.maxTweets;parseLinks=config.enableLinks;printUser=config.showUser;printTime=config.showTime;showRts=config.showRetweet;formatterFunction=config.dateFunction;customCallbackFunction=config.customCallback;showInteractionLinks=config.showInteraction;showImages=config.showImages;useEmoji=config.useEmoji;targetBlank=config.linksInNewWindow;permalinks=config.showPermalinks;dataOnly=config.dataOnly;var head=document.getElementsByTagName('head')[0];if(script!==null){head.removeChild(script);}
script=document.createElement('script');script.type='text/javascript';if(config.list!==undefined){script.src='https://syndication.twitter.com/timeline/list?'+'callback=__twttrf.callback&dnt=false&list_slug='+
config.list.listSlug+'&screen_name='+config.list.screenName+'&suppress_response_codes=true&lang='+(config.lang||lang)+'&rnd='+Math.random();}else if(config.profile!==undefined){script.src='https://syndication.twitter.com/timeline/profile?'+'callback=__twttrf.callback&dnt=false'+'&screen_name='+config.profile.screenName+'&suppress_response_codes=true&lang='+(config.lang||lang)+'&rnd='+Math.random();}else if(config.likes!==undefined){script.src='https://syndication.twitter.com/timeline/likes?'+'callback=__twttrf.callback&dnt=false'+'&screen_name='+config.likes.screenName+'&suppress_response_codes=true&lang='+(config.lang||lang)+'&rnd='+Math.random();}else{script.src='https://cdn.syndication.twimg.com/widgets/timelines/'+
config.id+'?&lang='+(config.lang||lang)+'&callback=__twttrf.callback&'+'suppress_response_codes=true&rnd='+Math.random();}
head.appendChild(script);}},callback:function(data){if(data===undefined||data.body===undefined){inProgress=false;if(queue.length>0){twitterFetcher.fetch(queue[0]);queue.splice(0,1);}
return;}
if(!useEmoji){data.body=data.body.replace(/(<img[^c]*class="Emoji[^>]*>)|(<img[^c]*class="u-block[^>]*>)/g,'');}
if(!showImages){data.body=data.body.replace(/(<img[^c]*class="NaturalImage-image[^>]*>|(<img[^c]*class="CroppedImage-image[^>]*>))/g,'');}
if(!printUser){data.body=data.body.replace(/(<img[^c]*class="Avatar"[^>]*>)/g,'');}
var div=document.createElement('div');div.innerHTML=data.body;if(typeof(div.getElementsByClassName)==='undefined'){supportsClassName=false;}
function swapDataSrc(element){var avatarImg=element.getElementsByTagName('img')[0];avatarImg.src=avatarImg.getAttribute('data-src-2x');return element;}
var tweets=[];var authors=[];var times=[];var images=[];var rts=[];var tids=[];var permalinksURL=[];var x=0;if(supportsClassName){var tmp=div.getElementsByClassName('timeline-Tweet');while(x<tmp.length){if(tmp[x].getElementsByClassName('timeline-Tweet-retweetCredit').length>0){rts.push(true);}else{rts.push(false);}
if(!rts[x]||rts[x]&&showRts){tweets.push(tmp[x].getElementsByClassName('timeline-Tweet-text')[0]);tids.push(tmp[x].getAttribute('data-tweet-id'));if(printUser){authors.push(swapDataSrc(tmp[x].getElementsByClassName('timeline-Tweet-author')[0]));}
times.push(tmp[x].getElementsByClassName('dt-updated')[0]);permalinksURL.push(tmp[x].getElementsByClassName('timeline-Tweet-timestamp')[0]);if(tmp[x].getElementsByClassName('timeline-Tweet-media')[0]!==undefined){images.push(tmp[x].getElementsByClassName('timeline-Tweet-media')[0]);}else{images.push(undefined);}}
x++;}}else{var tmp=getElementsByClassName(div,'timeline-Tweet');while(x<tmp.length){if(getElementsByClassName(tmp[x],'timeline-Tweet-retweetCredit').length>0){rts.push(true);}else{rts.push(false);}
if(!rts[x]||rts[x]&&showRts){tweets.push(getElementsByClassName(tmp[x],'timeline-Tweet-text')[0]);tids.push(tmp[x].getAttribute('data-tweet-id'));if(printUser){authors.push(swapDataSrc(getElementsByClassName(tmp[x],'timeline-Tweet-author')[0]));}
times.push(getElementsByClassName(tmp[x],'dt-updated')[0]);permalinksURL.push(getElementsByClassName(tmp[x],'timeline-Tweet-timestamp')[0]);if(getElementsByClassName(tmp[x],'timeline-Tweet-media')[0]!==undefined){images.push(getElementsByClassName(tmp[x],'timeline-Tweet-media')[0]);}else{images.push(undefined);}}
x++;}}
if(tweets.length>maxTweets){tweets.splice(maxTweets,(tweets.length-maxTweets));authors.splice(maxTweets,(authors.length-maxTweets));times.splice(maxTweets,(times.length-maxTweets));rts.splice(maxTweets,(rts.length-maxTweets));images.splice(maxTweets,(images.length-maxTweets));permalinksURL.splice(maxTweets,(permalinksURL.length-maxTweets));}
var arrayTweets=[];var x=tweets.length;var n=0;if(dataOnly){while(n<x){arrayTweets.push({tweet:tweets[n].innerHTML,author:authors[n]?authors[n].innerHTML:'Unknown Author',author_data:{profile_url:authors[n]?authors[n].querySelector('[data-scribe="element:user_link"]').href:null,profile_image:authors[n]?authors[n].querySelector('[data-scribe="element:avatar"]').getAttribute('data-src-1x'):null,profile_image_2x:authors[n]?authors[n].querySelector('[data-scribe="element:avatar"]').getAttribute('data-src-2x'):null,screen_name:authors[n]?authors[n].querySelector('[data-scribe="element:screen_name"]').title:null,name:authors[n]?authors[n].querySelector('[data-scribe="element:name"]').title:null},time:times[n].textContent,timestamp:times[n].getAttribute('datetime').replace('+0000','Z').replace(/([\+\-])(\d\d)(\d\d)/,'$1$2:$3'),image:extractImageUrl(images[n]),rt:rts[n],tid:tids[n],permalinkURL:(permalinksURL[n]===undefined)?'':permalinksURL[n].href});n++;}}else{while(n<x){if(typeof(formatterFunction)!=='string'){var datetimeText=times[n].getAttribute('datetime');var newDate=new Date(times[n].getAttribute('datetime').replace(/-/g,'/').replace('T',' ').split('+')[0]);var dateString=formatterFunction(newDate,datetimeText);times[n].setAttribute('aria-label',dateString);if(tweets[n].textContent){if(supportsClassName){times[n].textContent=dateString;}else{var h=document.createElement('p');var t=document.createTextNode(dateString);h.appendChild(t);h.setAttribute('aria-label',dateString);times[n]=h;}}else{times[n].textContent=dateString;}}
var op='';if(parseLinks){if(targetBlank){targetLinksToNewWindow(tweets[n]);if(printUser){targetLinksToNewWindow(authors[n]);}}
if(printUser){op+='<div class="user">'+strip(authors[n].innerHTML)+'</div>';}
op+='<p class="tweet">'+strip(tweets[n].innerHTML)+' ';if(printTime){if(permalinks){op+='<a class="time" href="'+permalinksURL[n]+'">'+times[n].getAttribute('aria-label')+'</a></p>';}else{op+='<p class="timePosted">'+
times[n].getAttribute('aria-label')+'</p>';}}}else{if(tweets[n].textContent){if(printUser){op+='<p class="user">'+authors[n].textContent+'</p>';}
op+='<p class="tweet">'+tweets[n].textContent+'</p>';if(printTime){op+='<p class="timePosted">'+times[n].textContent+'</p>';}}else{if(printUser){op+='<p class="user">'+authors[n].textContent+'</p>';}
op+='<p class="tweet">'+tweets[n].textContent+'</p>';if(printTime){op+='<p class="timePosted">'+times[n].textContent+'</p>';}}}
if(showInteractionLinks){op+='<p class="interact"><a href="https://twitter.com/intent/'+'tweet?in_reply_to='+tids[n]+'" class="twitter_reply_icon"'+
(targetBlank?' target="_blank">':'>')+'Reply</a><a href="https://twitter.com/intent/retweet?'+'tweet_id='+tids[n]+'" class="twitter_retweet_icon"'+
(targetBlank?' target="_blank">':'>')+'Retweet</a>'+'<a href="https://twitter.com/intent/favorite?tweet_id='+
tids[n]+'" class="twitter_fav_icon"'+
(targetBlank?' target="_blank">':'>')+'Favorite</a></p>';}
if(showImages&&images[n]!==undefined&&extractImageUrl(images[n])!==undefined){op+='<div class="media">'+'<img src="'+extractImageUrl(images[n])+'" alt="Image from tweet" />'+'</div>';}
if(showImages){arrayTweets.push(op);}else if(!showImages&&tweets[n].textContent.length){arrayTweets.push(op);}
n++;}}
handleTweets(arrayTweets);inProgress=false;if(queue.length>0){twitterFetcher.fetch(queue[0]);queue.splice(0,1);}}};window.__twttrf=twitterFetcher;window.twitterFetcher=twitterFetcher;return twitterFetcher;}));

var configProfile = {
"profile": {"screenName": 'TWITTERKULLANICIADI'},
"domId": 'tweets',
"maxTweets": 20,
"enableLinks": true,
"showUser": false,
"showTime": true,
"showImages": false,
"lang": 'tr'
};
twitterFetcher.fetch(configProfile);
</script>

Notlar :
Kodların en alt kısmında yer alan ayarların açıklamaları aşağıdaki şekilde. Önemli olan iki ayar kullanıcı adı ve kaç adet tweet gösterileceği. Diğer ayarlar isteğe göre düzenlenebilir.
var configProfile = {
"profile": {"screenName": 'webgunlugu'}, // Twitter Kullanıcı adı
"domId": 'tweets', // Tweetlerin gösterileceği div ID'si
"maxTweets": 20, // Gösterilecek tweet sayısı
"enableLinks": true, // Tweetlerdeki bağlantıların tıklanabilir olup/olmaması
"showUser": false, // Kullanıcı bilgileri gösterme/gizleme
"showTime": true, // Tweet zamanı gösterme/gizleme
"showImages": false, // Tweetlerdeki fotoğrafların gösterme/gizleme
"showInteraction":false, // Retweet, Reply, Retweet, Favorite gibi bağlantıları göster/gizle
"lang": 'tr' // Tweet zaman dili
};

CSS ayarları :
<style>
#tweets{overflow:auto}
#tweets .interact{display:none}
#tweets .tweet{padding:10px;}
#tweets .tweet a{text-decoration:none; color:#fff; }
#tweets .tweet a.time{border-bottom: 1px dashed #fff; cursor:pointer; background: #f7f7f7;
padding: 3px;
border-radius: 5px;
font-size: 13px;
}
#tweets ul, ul li{list-style:none; padding:0; margin:0; }
#tweets .tweet{float:left; font-family: "Segoe UI",Arial,sans-serif;}
</style>

Tweetlerin gösterileceği element. Nerede ve ne şekilde kullanılacaksa oraya eklenmeli.
<div id="tweets"></div>

Not: Yazı 10 Mart 2019 tarihinde güncellenmiş olup kodlar aktif olarak çalışmaktadır. Kodları canlı olarak test etmek için zaferzent.com/p/twitter-gunlugum.html sayfasına bakabilirsiniz.

20.05.2021 Güncelleme:
- Kodların önizleme adresi güncellenmiştir.
- Kodlar aktif çalışmaktadır, fakat tarayıcınızda adblock tarzı reklam engelleme eklentileri varsa kod çalışmayacaktır.

19.06.2021 Güncelleme
- Test edilerek çalışır durumda olan kodlar eklenmiştir.
- *Not : Tarayıcınızda reklam engelleyici gibi eklentiler varsa çalışmayacaktır.

Blogger yorum yazarlarının avatar boyutu nasıl değiştirilir

blogger avatar boyutu ve çözünürlük değiştirme
Blogger yorumlarda yer alan avatarların (yorum yazar resimleri) boyutu CSS ile artırılıp, azaltılabiliyor. Fakat bunu yaparken çözünürlük ayarlarına müdahele edilemediği için bozuk görüntüler ortaya çıkıyor.

Daha önce kullandığım temaların birisinde çözünürlük değiştirmeye yarayan javascript koduna denk geldim. Bu kod sayesinde avatar boyutları artıldığında oluşan bozukluk da ortadan kalkmış oluyor.

CSS ile avatar boyutunu değiştirme
.avatar-image-container{
margin-left: -30px;
background:#fff;
height:70px;min-height: 70px;
width:70px;min-width:70px;
}
.avatar-image-container img {background: url(http://2.bp.blogspot.com/-gcjQ0sgWw7M/T6WpkK4S5AI/AAAAAAAACEQ/hYAWpCPl6P0/s200/anonymous.jpg);
background-repeat: no-repeat;
background-position: center;
background-size: 100%;
width:70px;
min-width:70px;
height:70px;
min-height:70px;
}

JavaScript ile çözünürlük değiştirme /body (bitiş etiketinin önüne)
<script type='text/javascript'>
//<![CDATA[
$(document).ready(function(){
$('.comments .comments-content .avatar-image-container img').each(function(){
this.src = this.src.replace('/s35-c/', '/s80-c/');
});
$('.comments .comments-content .avatar-image-container img').each(function(){
this.src = this.src.replace('/s35/', '/s80-c/');
});
});
//]]>
</script>

*/s-35-c/ varsayılan olarak gelen değer /s80-c/ yeni atanan değer. Eğer 80*80 den fazla büyüklükte avatar kullanılacaksa ona göre değişiklik yapılabilir.

Blogger Webkid Teması

blogger webkid temasıBlogger Webkid teması, mobil cihazlar ile uyumlu diğer bir deyişle responsive, Ghost blog platformu için hazırlanan temalardan entegre ettiğim diğer bir tema. Teamada kullandığım eklentiler için, blogger instagram eklentisi, blogger son yorumlar eklentisi ve blogger son tweetleri gösterme yazılarına bakılabilir.

Son Yazılar Eklentisi Kodları :
<script type="text/javascript">
function showlatestpostswiththumbs(t){document.write('<ul class="recent-posts-container">');for(var e=0;e<posts_no;e++){var r,n=t.feed.entry[e],i=n.title.$t;if(e==t.feed.entry.length)break;for(var o=0;o<n.link.length;o++){if("replies"==n.link[o].rel&&"text/html"==n.link[o].type)var l=n.link[o].title,m=n.link[o].href;if("alternate"==n.link[o].rel){r=n.link[o].href;break}}var u;try{u=n.media$thumbnail.url}catch(p){s=n.content.$t,a=s.indexOf("<img"),b=s.indexOf('src="',a),c=s.indexOf('"',b+5),d=s.substr(b+5,c-b-5),u=-1!=a&&-1!=b&&-1!=c&&""!=d?d:"http://2.bp.blogspot.com/-C3Mo0iKKiSw/VGdK808U7rI/AAAAAAAAAmI/W7Ae_dsEVAE/s1600/no-thumb.png"}var h=n.published.$t,f=h.substring(0,4),w=h.substring(5,7),v=h.substring(8,10),A=new Array;A[1]="Ocak",A[2]="Şubat",A[3]="Mart",A[4]="Nisan",A[5]="Mayıs",A[6]="Haziran",A[7]="Temmuz",A[8]="Ağustos",A[9]="Eylül",A[10]="Ekim",A[11]="Kasım",A[12]="Aralık",document.write('<li class="recent-posts-list">'),1==posts_date&&document.write('<div class="post-date">'+v+" "+A[parseInt(w,10)]+" "+f+"</div>"),1==showpoststhumbs&&document.write('<a href="'+r+'"><img class="recent-post-thumb" src="'+u+'"/></a>'),document.write('<div class="recent-post-title"><a href="'+r+'" target ="_top">'+i+"</a></div>");var g="",k=0;document.write('<div class="recent-posts-details">'),document.write(g),document.write("</div>"),document.write("</li>")}document.write("</ul>")}
</script>
<script type="text/javascript">
var posts_no = 5;
var showpoststhumbs = false;
var readmorelink = true;
var showcommentslink = true;
var posts_date = true;
</script>
<script src="/feeds/posts/default?orderby=published&alt=json-in-script&callback=showlatestpostswiththumbs"></script>
<style>
.recent-post-title{margin-left: -10px;}
#HTML1 .widget-content {
padding: 1em;
}

#HTML1 .widget-content ul li a {
font-weight: bold;
}
</style>

Tema Önizleme : http://webkidtema.blogspot.com

Tema İndirme Adresi : https://yadi.sk/d/BfUyU97g3EU5sU

UYARI : Temada kaynaklanan sorunlar nedeniyle kullanmamanız tavsiye olunur.

Xiaomi Mi Band 2 Akıllı Bileklik İncelemesi

Xiaomi Mi Band 2 akıllı bileklik incelemesiEn son aldığım bir teknoloji ürünü olan xiaomi mi band 2 isimli akıllı bileklik oldu. Teknoloji takipçisi biri olarak ben de elimden geldiği kadar aşırı olmamak kaydıyla yeni çıkan, fark yaratan ürünleri, hizmetleri test etmeye, alıp kullanmaya çalışıyorum. Tabi şunun yenisi çıkmış bundan alayım, a bunun da yenisi çıkmış bundan da alayım, en sonu ben alayım, en iyiyi en pahalıyı ben alayım gibi bir takıntım da yok açıkçası. Ben teknolojiyi daha çok ihtiyaç, eksikliği giderme, kolaylık sağlama amaçlı kullanan birisiyim.

Son aldığım bir teknoloji ürünü olan Xiaomi Mi Band 2 akıllı bileklik ile hem bir nevi ihtiyacımı gidermiş oldum, hem de bu ihtiyacın üzerine sağladığı diğer özellikleri ile bana ekstra kolaylık sağlamış oldu. Ben de akıllı bileklik veya akıllı saat gibi ürünleri alıp kullanmak isteyenlere fayda sağlar düşüncesiyle, kullanım deneyimime göre xiaomi mi band 2 ile ilgili düşüncelerimi paylaşmak istedim.

Xiaomi Mi Band 2 akıllı bileklik Özellikleri



Bluetooth ile çalışan bileklik adım sayar için telefonun bluetooth özelliğinin açık olması gerekmiyor. Belirli bir süre yürüyüş yapılıp daha sonra bluetooth aktif hale getirildiğinde veriler uygulama üzerinde senkronize oluyor. Fakat uyguluma bildirimleri için bluetooth'un aktif olması gerekiyor.

Mi Band 2 akıllı bileklik - akıllı saat ortasında kalmış bir cihaz aslında. Akıllı bileklik denildiğinde akla gelen ilk şey spor yapanlar için, yapılan spor aktivitelerinin takibini sağlamak için tasarlanmış bir nevi bir aksesuar olması. Bunun için de özellik olarak akla gelen şeyler adım sayar, nabız ölçer, diğer spor aktivitelerinin mobil uygulama vasıtasıyla kaydının tutulması oluyor. Fakat mi band 2'de adım sayar, nabız ölçer, saat (kol hareketine duyarlı olarak görünüyor), alarm ve uygulama bildirimleri (titreşim olarak) gibi özellikleriyle diğerlerinden bir adım öne geçiyor.

Ayrıca kaç saat uykuda geçirildiğini, bunun kaç saat derin uyku olduğunu, oturma bildirimi (uzun süre hareketsiz kalındığında titreşimle uyarı vererek hareket etmeye teşvik etmesi) gibi özellikler de bulunuyor.

Bileklik su geçirmez deniliyor fakat bazı yorumlarda özellikle banyo çıkışından sonra dokunmatik tuşun bir süre düzgün çalışmadığı söyleniyor.

Küçük Sorunlar
Adım sayarın kol hareketinde veya yolculukta aracın ani hareketlerinde adım sayması. Nabız ölçerin doğru ölçüm yapabilmesi için hareketsiz olunması gerekiyor fakat hareketsiz durumda bile bir ölçümde 80 diğerinde 90 bir başka ölçünde ise 70 gibi sonuçlar çıkarabiliyor. Özetle adım sayar ve nabız ölçer %100 doğru sonuçlar vermiyor.

Şarj Süresi
Bilekliğin şarj olması süresi ise 2 saat. Şarjı 20 güne kadar gittiğine dair söylentiler var. İllaki özelliklerin aktif edilip edilmemesi ve kullanım durumuna göre bu süre değişiklik gösterebilir. Benim ilk şarj etmemin üzerinden 3 gün geçti ve şuan %79. Yani bu şekilde kullanmaya devam edersem yaklaşık 15 günlük bir şarj süresi sunmuş olacak.

Fiyat
Çin menşeli alışveriş sitelerinde 20 ile 25 dolar arasında yani 80 - 100 TL arasında Türkiye'de ise 130 - 160 TL arasında bir ücrete satılıyor.

Olsaydı iyi olurdu dediklerim
Çağrı cevaplama, reddetme, sessize alma
Müzik değişimi (Google Play'de test ettiğim ve çalışan Mi Band 2 Music Control adında 3.parti bir uygulama yer alıyor. Uygulama bir sonraki ve bir önceki müziğe geçişi sağlıyor.)

Ürün uygulaması
Bileklik uygulaması Mi Fit, iOS ve Android sürümleri mevcut.

Paket içeriği
Akıllı bileklik, çince kullanım kılavuzu, usb şarj kablosu.

Güncelleme 26 Ocak 2017 Perşembe - Arama ve mesaj bildirimlerinde isim görünmesi-görünmemesi

Arama ve mesaj bildirimlerine ilişkin detaya girmediğimi, yüzeysel olarak uygulama bildirimleri aldığını belirttiğimi farkettim. Arama ve mesaj bildirimleri(eğer bluetooth açıksa) anlık olarak(minimum 3sn sonra) bileklikte görülebiliyor. Fakat bu bildirimlerde sadece ikon görünür durumdaydı. Biraz araştırma yaparak iki farklı yöntemle arama ve mesaj bildirimlerinde isimleri alttaki resimlerde olduğu gibi görünür hale getirmeyi başardım.





Bu iki yöntemden birincisi kesin çözüm olmamakla birlikte telefon dilini ingilizce yapmak. Telefon dili ingilizce yapıldıktan sonra Mi Fit uygulamasına bir güncelleme geliyor o güncelleme yapıldıktan sonra isimler görünüyor. Fakat dil eski haline alındığında çalışmadığını farkettim. (Bazı forumlarda eski dil tekrar seçildiğinde çalıştığı belirtiliyor fakat öyle değilmiş)

İkinci yöntem ise kesin çözüm olmakla birlikte Mi Fit uygulamasının ingilizce sürümünü apk olarak edinip yüklemek. Bu adresten : https://yadi.sk/d/I3TUnwC_38v4QT temin edilebilir.

İki yöntem de biraz uğraştırıcı ve ingilizceden kaçış olmasa da şimdilik böyle idare edilebilir.

Güncelleme 2 - 17 Haziran 2017 - Mi Band 2 Şarj Olmama Sorunu

Geçenlerde Mi Band 2'nin bir kaç defa kablosunu çıkarıp takmama rağmen şarj olmadığını fark ettim. Daha önce de aynı sorunu yaşamışlığım olmuştu fakat çıkarıp takınca çözülüyordu. Fakat son şarj etmeye çalışmamda bu işe yaramayınca biraz araştırma yaptım ve sorunun alttaki resimde görülen iki noktanın terden dolayı oksitlenebileceğini öğrendim ve bir bez yardımıyla silerek tekrar şarja taktım ve bir süre sonra şarj olmaya başladı. Ayrıca bir de aynı sorunu yaşayanlar tarafından şarjın tamamen boşalmasından dolayı bazen şarj olmadığı da söyleniyor.



9 Eylül 2017, Pazartesi

Bilekliği kaybettiğimden dolayı yapılan güncelleştirme ve gelişmeler ile alakalı artık bilgiler paylaşamayacağım.

Hyde Blogger Teması

hyde blogger temasıHyde Blogger Teması yaklaşık bir hafta önce uyarlama yaptığım diğer sade blogger temalarından birisi. Aslı Mark Dotto tarafından Jekyll blog platformu için hazırlanmıştı.

Hyde Blogger Teması ile ilgili kısa bilgiler

Tema varsayılan hariç 8 farklı renk seçeneğine sahip olup <body> etiketine renklere ait class ismi eklenerek kullanılabiliyor. Fakat ben bir güzellik yaparak jQuery ve Cookies (çerezler) nimetlerinden yararlanarak dinamik bir hale getirdim. Önizleme adresinden de görüleceği gibi tek tıklamayla renk değişimi yapılabiliyor. Sidebar'ı da sağ tarafta göstermek için böyle bir kolaylık sağladım. Üstelik bu değişiklik cookies'ler vasıtasıyla kaydedildiği için sayfa yenilemesinde veya daha sonraki ziyaretlerde değişmiyor. Bu özelliğin blogger temalarında bir ilk olduğunu da belirtmeden geçemeyeceğim. Bu özellik sadece değişikliği yapan ziyaretçi için geçerli. Eğer statik bir şekilde bütün kullanıcılara aynı renk yansıtılacaksa yine body etiketine manuel olarak class ismi eklemek gerekiyor.

Statik renk değişimi için class isimleri
theme-base-08
theme-base-09
theme-base-0a
theme-base-0b
theme-base-0c
theme-base-0d
theme-base-0e
theme-base-0f

Kullanımı
<body class="theme-base-08">
...
</body>

Sidebar'ı sağ tarafta gösterme
<body class="layout-reverse">
...
</body>

Farklı renk ayarı ile birlikte sidebar'ı sağ tarafta gösterme
<body class="theme-base-08 layout-reverse">
...
</body>

Tema Önizleme : http://hydebloggertemplate.blogspot.com

Tema İndirme Adresi : https://yadi.sk/d/Pt261kpi32E5a4

Alternatif ve temanın güncel hali için : https://github.com/zaferzent/hydebloggertemplate