Elimizdeki JSON formatında bulunanan dataları table ile göstermek istiyoruz. Data içerisindeki true/false değerlerine görede ekranda Var/Yok yazısını çıkartmak istiyoruz. Template için Handlerbars kullanıyoruz. Bilindiği üzere Handlebars , Mustache dili üzerine ilavelerin olduğu ayrı bir yapı. Avantajlarını Google yardımı ile bulabilirsiniz. Biz örneğimizde ilavelerinden birisi olan helper’ı kullanacağız.
KN:14 JavaScript Pretty Date – Türkçe
JavaScript Pretty Date için Türkçesi
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/* * JavaScript Pretty Date * Copyright (c) 2011 John Resig (ejohn.org) * Licensed under the MIT and GPL licenses. */ // Takes an ISO time and returns a string representing how // long ago the date represents. function prettyDate(time) { var date = new Date((time || "") .replace(/-/g, "/") .replace(/[TZ]/g, " ")), diff = (((new Date()) .getTime() - date.getTime()) / 1000), day_diff = Math.floor(diff / 86400); if (isNaN(day_diff) || day_diff < 0 || day_diff >= 31) return; return day_diff == 0 && ( diff < 60 && "az önce" || diff < 120 && "1 dakika önce" || diff < 3600 && Math.floor(diff / 60) + " dakika önce" || diff < 7200 && "1 saat önce" || diff < 86400 && Math.floor(diff / 3600) + " saat önce") || day_diff == 1 && "Dün" || day_diff < 7 && day_diff + " gün önce" || day_diff < 31 && Math.ceil(day_diff / 7) + " hafta önce"; } |
KN:13: Batch dosyalarında çalışırken günlük log kaydı oluşturmak – Windows
Batch dosyalarınızın içerisinde günlük log atmasını istediğiniz durumlarda kullanabileceğiniz kod parçacığını aşağıda bulabilirsiniz.
|
1 |
Echo %Date% %Time% Log Dosyasına ne atmak istiyorsan >> C:\dailylogs\LOG_FILE_PREFIX_%Date%.txt |
KN:12 Google Maps ile harita üzerindeki noktalarda filtreleme yapmak
Google Maps ile elimizdeki gruplanmış dataları harita üzerinde gösterme ve/veya gizleme işlemleri ile ilgili basit bir örneği yazmak istedim.
Veriler JSON formatında api.php dosyasında geliyor. İlk eleman “leftMenu” elemanı ve dizi tipinde. Bu eleman ile soldaki Filtreler bölümünü Handlebar kullanarak oluşturuyor. İkinci eleman ise “istPoints”. Bu İstanbul’da işaretlenmiş ve gruplanmış datalarımızı tuttuğumuz dizi tipinde elemanımız. Filtrele butonu ile bu dizi içerisinde gezerek haritada uygun noktaları gösteriyoruz.
Kullanılan bileşenler ; Twitter Bootstrap , Handlebarjs.
Örnek uygulamaya gitmek için sizi burdan alalım
KN:11 Twitter Bootstrap – Breadcrumb’ı Javascript ile değiştirmek
Twitter Bootstrap’daki Breadcrumb bileşenini javascript’ten değiştirme ile ilgili örnek.
Kendi yazdığım breadCrumbs ile Handlebars’ı beraber kullandığım örnek uygulama.
Kullanılan bileşenler;
KN:10 Twitter Bootstrap bileşenleri için Zen Coding ifadeleri – Scalffolding,BaseCSS
Twitter Bootstrap ile proje geliştirirken sık sık kullandığım bileşenlerin Zen Coding ifadelerini paylaşmak istedim. Zaman oldukça eksiklikleri de tamamlayacağım.
Grid
|
1 2 3 4 5 |
<!-- Fixed Layout --> div.container>div.row>div.span2+div.span10 <!-- Fluid Layout --> div.container-fluid>div.row-fluid>div.span2+div.span10 |
Tables
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<!-- 1. Default table styles --> table.table>(thead>tr>td{Lorem Ipsum})+(tbody>tr>td{Lorem Ipsum}) <!-- 2. Striped table --> table.table.table-striped>(thead>tr>td{Lorem Ipsum})+(tbody>tr>td{Lorem Ipsum}) <!-- 3. Bordered table --> table.table.table-bordered>(thead>tr>td{Lorem Ipsum})+(tbody>tr>td{Lorem Ipsum}) <!-- 4. Condensed table --> table.table.table-condensed>(thead>tr>td{Lorem Ipsum})+(tbody>tr>td{Lorem Ipsum}) <!-- 5. Combine them all! --> table.table.table-striped.table-bordered.table-condensed>(thead>tr>td{Lorem Ipsum})+(tbody>tr>td{Lorem Ipsum}) |
Kaynaklar
KN:9 Twitter Bootstrap bileşenleri için Zen Coding ifadeleri – Components
Twitter Bootstrap ile proje geliştirirken sık sık kullandığım bileşenlerin Zen Coding ifadelerini paylaşmak istedim. Zaman oldukça eksiklikleri de tamamlayacağım.
Alerts
|
1 2 3 4 5 6 7 8 9 10 11 |
<!-- Warning --> div.alert.alert-block>button.close[data-dismiss=alert]{x}+strong{Lorem Ipsum} <!-- Error or Danger --> div.alert.alert-error>button.close[data-dismiss=alert]{x}+strong{Lorem Ipsum} <!-- Success --> div.alert.alert-success>button.close[data-dismiss=alert]{x}+strong{Lorem Ipsum} <!-- Information --> div.alert.alert-info>button.close[data-dismiss=alert]{x}+strong{Lorem Ipsum} |
Progress Bars
|
1 2 3 4 5 6 7 8 9 10 11 |
<!-- Info --> div.progress.progress-info>div.bar[style=width:40%] <!-- Success --> div.progress.progress-success>div.bar[style=width:40%] <!-- Warning --> div.progress.progress-warning>div.bar[style=width:40%] <!-- Danger --> div.progress.progress-danger>div.bar[style=width:50%] |
Badges
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<!-- Default --> span.badge{1} <!-- Success --> span.badge.badge-success{2} <!-- Warning --> span.badge.badge-warning{4} <!-- Important --> span.badge.badge-important{6} <!-- Info --> span.badge.badge-info{8} <!-- Inverse --> span.badge.badge-inverse{10} |
Labels
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<!-- Default --> span.label{Default} <!-- Success --> span.label.label-success{Success} <!-- Warning --> span.label.label-warning{Warning} <!-- Important --> span.label.label-important{Important} <!-- Info --> span.label.label-info{Info} <!-- Inverse --> span.label.label-inverse{Inverse} |
Breadcrumbs
|
1 |
ul.breadcrumb>(li>a{Home}+span.divider{/})+(li>a{Library}+span.divider{/})+li.active{Data} |
Kaynaklar
KN:8 log4php’de her isteği takip edebilmek için MDC’nin kullanımı
PHP’de yazdığım servisin log4php ile yazdırdığım loglarındaki isteklerin karışmaması ve nesneleri ,dizileri yazdırabilmek için aşağıdaki yöntemi kullanıyorum.
|
1 2 3 4 5 6 |
// bir önceki kn:7 içerisinde kodları mevcut altta kaynaklar içerisinde linkini bulabilirsiniz. include 'guid.php'; $guid = new Guid(); // her istek için bir key yaratılır $requestKey = $guid->getGuid(); LoggerMDC::put('requestkey', $requestKey); |
log4php’nin ayar dosyasındaki ilgili appender içerisinde layout kısmında %X{requestkey} ile belirtilir.
|
1 2 3 4 5 6 7 8 |
<appender name="log_file_appender_name" threshold="ALL" class="LoggerAppenderDailyFile"> <param name="file" value="C:\\All_%s.log" /> <param name="datePattern" value="Ymd"/> <param name="append" value="true"/> <layout class="LoggerLayoutPattern"> <param name="conversionPattern" value="%d{ISO8601} [%p] %X{requestkey} %m %n" /> </layout> </appender> |
Kaynaklar:
KN:7 Guid yaratma
PHP sitesinde örnekleri var. Yanılmıyorsam php.net üzerinde aldım.
Guid yaratan class dosyam.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php class Guid { public function getGuid($onlyAZ = FALSE) { $guid = $this->_guid(); if($onlyAZ){ $guid = str_replace("{", "", $guid); $guid = str_replace("}", "", $guid); } return $guid; } private function _guid() { if (function_exists('com_create_guid')){ return com_create_guid(); }else{ mt_srand((double)microtime()*10000); $charid = strtoupper(md5(uniqid(rand(), true))); $hyphen = chr(45);// "-" $uuid = chr(123)// "{" .substr($charid, 0, 8).$hyphen .substr($charid, 8, 4).$hyphen .substr($charid,12, 4).$hyphen .substr($charid,16, 4).$hyphen .substr($charid,20,12) .chr(125);// "}" return $uuid; } } } |
2 şekile kullanılabilir.
1. {,} parantezler ile
|
1 2 3 |
$guid = new Guid(); echo $guid->getGuid(); // ekrandaki çıktısı {514EE53D-E7FE-4A24-97ED-C46B0B0A1861} |
1. {,} parantezler olmadan
|
1 2 3 |
$guid = new Guid(); echo $guid->getGuid(true); // ekrandaki çıktısı 514EE53D-E7FE-4A24-97ED-C46B0B0A1861 |
KN:6 2 tarih arasındaki zamanı anlaşılır şekilde belirlemek
John Resig’in yazdığı Javascript Pretty Date‘in PHP uyarlamasıdır.
DatePretty class’ını aşağıda bulabilirsiniz.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
<?php class DatePretty { public $second = -1; public $minute = -1; public $hour = -1; public $day = -1; public $week = -1; public $diffsecond = -1; public function diffPrettyBetweenDates($lastDate, $firstDate) { if (!isset($lastDate) || $lastDate == null && $lastDate == '') { $lastDate = date("Y-m-d H:i:s"); } if (!isset($firstDate)) { $firstDate = date("Y-m-d H:i:s"); } $dt = $this->_parseDate($lastDate); $last = mktime($dt[3], $dt[4], $dt[5], $dt[1], $dt[2], $dt[0]); $dt = $this->_parseDate($firstDate); $first = mktime($dt[3], $dt[4], $dt[5], $dt[1], $dt[2], $dt[0]); $time = $last - $first; if ($time < 0) { $time = 0; } $this->_setDatePrettyElements($time); } public function diffPrettyTime($time) { $this->_setDatePrettyElements($time); } public function toString() { $response = ""; if ($this->week > 0) { $response .= $this->week . " hafta "; } if ($this->day > 0) { $response .= $this->day . " gün "; } if ($this->hour > 0) { $response .= $this->hour . " saat "; } if ($this->minute > 0) { $response .= $this->minute . " dakika "; } if ($this->second > -1) { $response .= $this->second . " saniye "; } return $response; } private function _setDatePrettyElements($time) { $this->diffsecond = $time; $this->_resetValues(); $diff = $time; $day_diff = floor($diff / 86400); if ($day_diff == 0) { if ($diff < 60) { $this->second = $diff; } else if ($diff < 3600) { $m = floor($diff / 60); $s = $diff - ($m * 60); $this->second = $s; $this->minute = $m; } else if ($diff < 86400) { $h = floor($diff / 3600); $m = floor(($diff - ($h * 3600)) / 60); $s = $diff - ($h * 3600) - ($m * 60); $this->second = $s; $this->minute = $m; $this->hour = $h; } } else if ($day_diff < 7) { $diff = $diff - $day_diff * 86400; $h = floor($diff / 3600); $m = floor(($diff - ($h * 3600)) / 60); $s = $diff - ($h * 3600) - ($m * 60); $this->second = $s; $this->minute = $m; $this->hour = $h; $this->day = $day_diff; } else { $w = floor($day_diff / 7); $day_diff = $day_diff - $w * 7; $diff = $diff - ($w * 7 + $day_diff) * 86400; $h = floor($diff / 3600); $m = floor(($diff - ($h * 3600)) / 60); $s = $diff - ($h * 3600) - ($m * 60); $this->second = $s; $this->minute = $m; $this->hour = $h; $this->day = $day_diff; $this->week = ceil(($w * 7 + $day_diff) / 7); } } private function _parseDate($d) { $t = explode(" ", $d); $t1 = explode("-", $t[0]); $t2 = explode(":", $t[1]); return array_merge($t1, $t2); } private function _resetValues() { $this->second = -1; $this->minute = -1; $this->hour = -1; $this->day = -1; $this->week = -1; } } |
2 şekilde kullanılabilir.
1. Hesaplanacak zaman integer olarak biliniyor ise
|
1 2 3 4 |
$dp = new DatePretty(); $dp->diffPrettyTime(1000); // 1000 saniye echo $dp->toString(); // ekrandaki çıktısı 16 dakika 40 saniye |
2. Hesaplanacak zaman tarih olarak biliniyor ise
|
1 2 3 4 |
$dp = new DatePretty(); $dp->diffPrettyBetweenDates("2012-05-06 18:56:00","2012-05-06 10:00:00"); echo $dp->toString(); // ekrandaki çıktısı 8 saat 56 dakika 0 saniye |