Tumgik
emre-dev · 11 years
Text
45 gün.
3 yıl içinde yaptığım toplam starcraft2 maçı sayısı 4359. maç başına ortalama 15 dakika versek:
>>> (4359 * 15) / (60 * 24) 45 >>>
son 3 yılın 1.5 ayını full-time starcraft2 oynayarak geçirmişim. bu 3 yılın 6 ayında askerde olduğumu düşünürsek, 30 aylık yaşam süremin 1.5 ayı starcraft2 oynayarak geçmiş.
science wins. elveda starcraft.
0 notes
emre-dev · 11 years
Text
ölüm.
2 hafta önceki perşembe gecesi ertesi gün gireceğim ZCE sınavına hazırlanmak için (üniversiteden kalmış bir alışkanlık, son gün son gece hayvanlar gibi çalışmak.) sabaha kadar çalıştım, 03.30 gibi yattım.
04:00 civarı telefonla üzücü bir haber aldım. haberi alır almaz kara şimşeğe atlayıp kastamonu'ya doğru yola çıkmam gerekti. (500~km.)
yolun büyük bir kısmı otoban. ben uykusuzum. viraj bile nadir, saat itibariyle etrafta araba bile nadir. yol boyunca uykusuz olduğum için 100~km'de bir durup elimi yüzümü yıkıyorum, uyanmaya kendime gelmeye çalışıyorum. aldığım haberden dolayı kafam da uyanık olduğum süre boyunca başka yerlerde.
tahminen 130/140 km hızla giderken otoban'da uyuyakaldım. 2/3 saniye boyunca bilincim yerinde değildi. araba otobanın en sol şeridinden çıktı. şerid ile bariyerler dışında pek de olmaması gerektiği halde boşluk vardı şansa. (düz bir boşluk değil yine de ortası çukur olmakla beraber yağmur sularının toplanıp gitmesi için yapılmış bir alan.)
filmerde bir uzay gemisi saldırıya uğrar, gemi sallanır, oradan buradan sesler gelir, konsol başında oturan subay, "zırhlar tüklenmek üzere kaptanım!" der, tam bir kaos ortamı oluşur. uyandığımda böyle bir manzara ile karşılaştım. filmlerdeki uzay gemilerinin aksine "jump" etme olanağım da yoktu maalesef. (sene 2013, uçan arabalar nerde!)
araba devrilmek ve devrilmemek arasında geldi, bir şekilde toparladım ve durmayı başardım.
8 yıldır şöförüm. 1 kere olsun dahi kaza geçirmedim. bir kere olsun kullandığım arabayı sürtmedim, benden kaynaklı kaza tehlikesi bile geçirdiğim söylenemez.
ölüm'e bu kadar hiç yaklaşmamıştım.
otoban'ın çoğunda olduğu gibi o kısım boşluk olmasa ne olurdu bilmiyorum.
kullandığım araç jip olmasaydı o boşlukta dengede kalmayı başarabilir miydim, hiç bilmiyorum.
moral of the story
uykusuz bir şekilde yola çıkmayın. ya da yalnız çıkmayın. acil bir durum olduğunda yanınıza bir arkadaş alın. hele ki kötü bir haber almışsanız ve kafanız karışıksa.
Her zaman "allah korudu" denmiyor. "allah rahmet eylesin"e döndürmemek lazım.
1 note · View note
emre-dev · 11 years
Photo
storm is a command line tool to manage your ssh connections.
Tumblr media
12 notes · View notes
emre-dev · 11 years
Text
programlama dilleri ve gariplikleri
"PHP'de bir string'in içinde başka bir string var mı yok mu nasıl kontrol edebilirim?" diye bir google araması yapsanız bulacağınız ilk fonksiyon strpos olacaktır.
strpos, string varsa bulunan string'in pozisyonunu int olarak döndürüyor, string yoksa FALSE döndürüyor. güzel gibi. bir kod yazıp dendeyelim:
<?php function is_in($search_text, $text) { return strpos($search_text, $text); } if(is_in('123', '1')) { print('buldum'); } else { print('bulamadım'); }
birkaç veri ile test edelim:
<?php function is_in($search_text, $text) { return strpos($search_text, $text); } $testData = array('2', '3', '1'); $searchStack = '123456'; foreach($testData as $data) { if(is_in($searchStack, $data)) { printf("%s bulundu.\n", $data); } else { printf("%s bulunamadı.\n", $data); } }
hepsini bulmalı değil mi? deneyelim.
» php a.php 2 bulundu. 3 bulundu. 1 bulunamadı.
1'in bulunamamasın sebebi 1'in aranan string üzerindeki pozisyonun 0 olması. if(0), if(FALSE) ile aynı şey olduğu için mükemmel kodumuz çalışmıyor.
strpos'u 4-5 sene önceki PHP dönemlerimde yüzlerce kere kullanmışımdır, ama bugün sorunu göremedim ilk bakışta.
burda sorun aslında PHP'de değil de, PHP'de bir string var mı yok mu kontrolü için strpos gibi bir fonksiyonun kullanılması. yoksa elegan elegan yazdığımız python da 0'ı false olarak cast eder.
pro tip: python'da aynı iş if 'string' in 'aranacak_string'
0 notes
emre-dev · 11 years
Text
utanma driven development
proje biter, 'vay testler olmadan mı çalışıyorsunuz siz' sorularına mazur kalmamak için göstermelik unit testler yazılır.
win win.
0 notes
emre-dev · 11 years
Text
hedef.
"I'm a dog chasing cars. I wouldn't know what to do with one if I caught it! You know, I just... do things."
şu cümleyi kuramıyorum. hadi yalan olmasın, karılı kızlı ortamlarda kuruyorum ama içten bir şekilde değil.
bir şeyler eksik. önüme koyduğum ne hedef varsa eninde, sonunda gerçekleşiyor. gerçekleştiğinde başka bir hedef çıkıyor gerçekleştirecek. e geçti böyle 26 yıl, bir 26 yıl daha geçer sonra?
şanslıysan bir 26 yıl daha yaşarsın. allah yaşatsın kardeş.
0 notes
emre-dev · 11 years
Text
tmux notları
başlangıç
yeni bir oturum başlatmak
tmux new -s oturum_adi
açılan oturumu "detach" etmek.
(görünürde çıkıyoruz ama arkaplanda komut(lar) çalışmaya devam ediyor.)
[PREFIX] d
(PREFIX standart olarak CTRL+B, ben CTRL+A olarak değiştirdim. notların tamamında [PREFIX] olarak referans edilecektir.)
arkaplandaki oturuma devam etmek
tmux attach -t oturum_adi (tek bir oturum varsa tmux attach)
örnek:
tmux new -s genel top [PREFIX] d tmux list-sessions # açık oturumları listeler. tmux attach -t genel
oturumu öldürmek
takılan (hang olmuş) bir oturum varsa:
tmux kill-session -t target_name
pencereler
pencereler, tab olarak düşünülebilir.
tmux içindeyken yeni bir pencere yaratmak için:
[PREFIX] + c # c for create
bulunulan pencerenin adını değiştirmek
[PREFIX] + : rename-window
pencereler arasında gezinmek
[PREFIX] + n
veya
[PREFIX] + p
n(ext) sonraki, (p)revious önceki pencereye geçiş sağlar.
veya
[PREFIX] + PENCERE_NUMARASI
0 ile 9 arasında olabilir.
pencereyi kapatmak
exit
panellerle çalışmak (panes, dilimler?)
pencereleri X kadar panele bölmek mümkün.
pencereyi "horizantal" bölmek
[PREFIX] + %
pencereyi "vertical" bölmek
[PREFIX] + "
~/.tmux.conf'a eklenecek şu satırlarla daha "semantik" bir şekilde halloluyor.
bind | split-window -h bind - split-window -v
paneller arası gezinti
[PREFIX] + o
veya
[PREFIX] + [yön tuşları]
hazır panel planları
tmux ile beraber geliyor:
horizontal
even-vertical
main-horizontal
main
tiled
bunlar arasında geçiş yapmak için:
[PREFIX] + [space]
panel numaralarını görmek (bir saniyeliğine)
[PREFIX] + q
panelden çıkış
exit
tmux komut modu
[PREFIX] + :
ile komut moduna giriliyor. yazılabilecek komutlar çok fazla. list-commands komutuyla ilgili komutlar geliyor.
tmux ayarlarıyla oynamak
prefix'i değiştirmek
touch ~/.tmux.conf
ile kullanıcınıza ait ayar dosyasını oluşturun.
prefix her komutta var, CTRL+B yerine CTRL+a daha rahat gibi.
set -g prefix C-a unbind C-b
tmux.conf'ta yapılan değişikliklerden sonra değişiklerin yansıması için komut modunda:
source-file ~/.tmux.conf
pencere ve panellerde index'i 1'den başlatmak
bilgisayarlar 0'dan başlayabilir. biz 1'den başlasak daha iyi.
set -g base-index 1 setw -g pane-base-index 1
source-file komutu için kısayol
bind r source-file ~/.tmux.conf \; display-message "Config reloaded..."
mouse desteğini aktif hale getirmek
(kısayollara alışırsanız daha iyi/hızlı olur uzun vadede.)
setw -g mode-mouse on set -g mouse-select-pane on set -g mouse-resize-pane on set -g mouse-select-window on
0 notes
emre-dev · 11 years
Text
automating/managing ssh configurations with python
I use sshconfigs a lot. It's always good to connect a custom configured ssh connection with just "ssh host_name".
recently, I released a command line utility to handle ssh configs. It does not bring magical stuff compared to vim ~/.ssh/config. But I just like this way more, and commands like list/search would be pretty useful if you have a lot of servers in your ssh config.
after the release, a lot of people asked to use it as a library instead of a command-line tool. So, here it is, a little documentation about how to use storm as a python library (luckily, it was decoupled enough to use it like this.)
installation
pip install stormssh
initialization:
from storm import ssh_config sconfig = ssh_config.ConfigParser("/home/emrebey/.ssh/config") sconfig.load()
get the raw config
output:
[{ 'host': 'vps', 'type': 'entry', 'options': { 'hostname': 'emreyilmaz.me', 'user': 'root', 'port': '22' }, 'order': 1 }, { 'host': 'netscaler', 'type': 'entry', 'options': { 'hostname': 'netscaler.com', 'user': 'root', 'port': '22' }, 'order': 2 } ]
add a host to config
sconfig.add_host('name', { 'user': 'user', 'hostname': 'hostname.com', 'port': 2400, }) sconfig.write_to_ssh_config() # save it to the config
modify a host
sconfig.update_host('name', { 'user': 'root', 'hostname': 'root.com', 'port': 22, })
deleting a single host by name
from storm.exceptions import StormValueError try: sconfig.delete_host('name') except StormValueError: pass
delete all hosts
sconfig.delete_all_hosts()
searching hosts
print sconfig.search_host('vps')
output:
[{ 'host': 'vps', 'type': 'entry', 'options': { 'hostname': 'emreyilmaz.me', 'user': 'emre', 'port': '22' }, 'order': 1 }, { 'host': 'vps_backup', 'type': 'entry', 'options': { 'hostname': 'emreyilmaz.me', 'user': 'root', 'port': '24' }, 'order': 2 } ]
browse ssh_config.py for more.
3 notes · View notes
emre-dev · 11 years
Text
askerlik görevimi bitireli 3-4 ay oluyor ve çarşı izinlerinde arayan uzun dönemlerin şafak söylemeleri olmasa hiç askerlik yapmamış gibiyim. böyle bir yazı yazmak geldiğimden beri aklımdaydı ama şu güne kısmetmiş. ("öğretmeniz bizden en iyi arkadaşımız hakkında bir kompozisyon istedi" tarzı bir giriş oldu, farkındayım idare edin.)
öncelikle kısa dönem askerlik, değerinizi bilmeniz gereken bir şey. bedelli askerlik yapma ihtimaliniz yoksa, sırf kısa dönem askerlik için okul bitirmenizi (birçok kişinin yaptığı gibi açıköğretim?) şiddetle öneririm. 15 ay orada yaşamak, askeriye'yi çekmek, sizden teknik olarak 15 ay alacak ama götürüsü muhtemelen birkaç yıl olur hayatınızdan. dolayısıyla bu yazıyı okuyan kısa dönem askerlik adayları, güzel bir haberim var. yırttınız.
acemilik
elinizde çantalarınızla arkanızda bıraktığınız sevgilinizi düşünürken ve bu durumla ilgili olası kötü senaryoların çeşitli varyasyonları hakkında sıkıntı yaparken, acemilik yaptığınız birliğe teslim olacaksınız. burada ilginç bir üretim bandı var. ordaki diğer askerlerin kılavuzluğuyla girdiğiniz binaya sivil olarak girip, asker olarak çıkacaksınız öncelikle. o binanın içinde saçınız sakalınız uzunsa kesilecek, üstünüzde sivil hayata ait bir şey kalmayacak, aynı andan iki koldan birden aşı olmayı (bu aşıların askerliğin ilk haftasında kabız yaptığı da söyleniyor.) hayatınızda ilk defa tecrübe edecek, o binadan çıkıp bağlamaya çalıştığınız 2 numara büyük botlar ve kamuflajla artık -bir süreliğine de olsa- hayatınızı yönetemeceğinizi fark edeceksiniz.
acemilik benim açımdan eğlenceliydi. genelde herkes acemiliğin zor geçtiğini söyleyeektir size ama askerlikte bana en yararlı zamanları acemilikte geçirdim. bu süre zarfında sorumluluk da almayacaksınız, kısa dönem olduğunuz için başınızda ki çavuşlar size dokunmayı bırak, bağırmaya bile korkacak. ve her şeyden önemlisi büyük ihtimalle bölüğünüz tamamen kısa dönem olacağı için, boş zamanlarınızda muhabbet edebileceğiniz insanlar olacak. ve güzel bir ekibe denk gelirseniz, o 1 aylık sürede güzel bir arkadaş grubu da edineceksiniz. ve hatta, uzun süre spor yapmamış bünyeniz, abur cubur'dan bir süre uzak duracak, her gün eğitimlerde sarfettiğiniz o kadar enerji ile oldukça güzel kilo da vereceksiniz. (ben gittiğimde 88 kiloydum, 1 ayda 78 kiloya düştüm, üstüne üstlük kendimi çok daha sağlıklı hissederek.)
bunlar acemiliğin güzel yanları. kötü yanları, istediğiniz zaman telefon edemeyeceksiniz. dış dünya ile iletişiminiz sıfır olacak. telefon etmek için, 5 dakika konuşabilmek için, 1 saat sıra bekleyeceksiniz. yaz döneminde giderseniz, soğuk bir cola içebilmek için yine 1 saat bekleyeceksiniz. (ama sıcak bir kola ile uzaklaşacaksınız kantin sırasından.) dışarıda bir sevgiliniz varsa muhtemelen onu hiç özlemediğiniz kadar özleyeceksiniz. kafayı kırıp not defterine mektuplar, "içerde yazdığım notları kitap haline getirdim pakize" triplerine de girebilirsiniz, tavsiye etmem.
***
19-20 yaşında çocuklara maalesef acemilik boyunca "komutanım" çekmeniz bekleniyor. acemilikte, çavuşlarla aranızı iyi tutarsanız iyi edersiniz. hemşeri muhabbeti yaparak, kantin sırasına girmeden hedef çavuşa sigara aldırabilir, yat saatinden sonra masa tenisi oynayabilir, ağrı çektiğinizde revir bürokrasisi ile uğraşmadan ağrı kesici edinebilirsiniz. dolayısıyla burası çok önemli, ben 30 yaşında adamım, 19 yaşında çocuğa mı komutanım çekicem diye bir şey yok, aranızı iyi tutun, sakata gelmeyin.
bir diğer önemli konuda botlar. "1 numara büyük bot al" tavsiyesini zaten orda burda çok alacaksınız. güzel bir tavsiye, ama fayda etmeyecek maalesef. ayaklarınız o botlara alışana kadar (kişiye göre değişmekle beraber 3 gün <-> 2 ay arası bir süre) o botlar ayağınıza vuracak. burada önemli olan nokta, ayağınızı temiz tutmak, vuran/şişen yerler için kremleri birliğe gitmeden edinmek.
otostopçunun acemilik çantası
pudra (yazın gidiyorsanız oranız buranız pişik olacak.)
bol bol krem. (yazın gidiyorsanız yanık kremi, hatta yanmadan işi çözeyim diyorsanız güneş kremi!)
ıslak mendil, peçete (orada edinmek sıkıntı olabilir.)
bol bol don/atlet. (orda size birkaç çift verilecek, çamaşırlar haftada bir toplanacak ama çamaşır filenizi bir daha bulamayabilirsiniz. eğitim yorgunluğu sonrası elde çamaşır yıkamak insanı öldürüyor.)
kolonya/ya da güzel kokan bir şeyler. (güzel kokuya hasret kalacaksınız.)
bir karton sigara (benim gibi bir tiryaki iseniz, acemilikte ilk gün atın dolaba. dolapta bir zulanız olmalı, düştüğünüz yere bağlı olarak sigara alamayacağınız günler ya da istediğiniz sigarayı alamayacağınız günler olacak.)
sıvı sabun, şampuan. (bunlar genelde gittiğiniz yerde edinebileceğiniz şeylerden ama. 1 saat sıra beklemek, ya da hazırlıksız yakalanmak istemezsiniz. küçüklerinden birer tane atmak faydalı.)
telefon kartı. (yurtdışını arayacaksanız şifreli telefon kartları var oldukça ucuza. ben amerikayla türkiyeden daha ucuza konuşuyordum.)
yukarıdaki liste sizi rahat ettirir. düştüğünüz yere bağlı olarak, bunları acemilikte de rahat rahat kantinlerden edinebilirsiniz. ama kantine gitmenize izin olmayan, ya da kantinde hiçbir şey olmayan yerlere düşebileceğinizi göze alarak hazırlıklı gitmekte fayda var.
rütbe
acemiliğinizin son ve en son keyifli zamanlarında onbaşılık ve geçerseniz çavuşluk sınavlarını alacaksınız. bunlara dikkat edin derim, sınavla seçimin ilgili olup olmadığı bilinmiyor ama ben ayrı ayrı notları verilmiş sonuçları bizzat gördüm, 1400 kişi olduğumuz celpten de 600 civarı kişi çavuş oldu. çavuş olmak size büyük bir şey kazandırmıyor, ayda 8 lira daha fazla maaş alacaksınız ve düştüğünüz bölükte erlere göre biraz daha fazla sorumluluk alacaksınız.
**ustalık ** askerliğin sıkıcı ama rahat döneminin başladığı zaman diliminin başı, usta birliğinize teslim olduğunuz gün. bizim hangi bölüğe düşeceğimiz 2 hafta içinde belli olmuştu. yemin töreninden sonra çakı gibi birlikten çıkıp 1(X) gün yol izninin tadını çıkaracaksınız. bu 24 saatlik dilimde sivil hayatın ne kadar güzel olduğunu farkedeceksiniz ama fazla kapılmayın, daha geçirilecek 4 ay daha var.
gelelim sorumluluk muhabbetine. usta birliğinize ilk vardığınız günlerde, skillset'inize göre bir iş verilmeye çalışılacak size. eğer uygun bir iş yoksa, yine çeşitli sorumluluklar alacaksınız. çavuş olursanız sorumluluğu yüksek işlerde bulunmanız daha yüksek bir olasılık. burada benim askerlikten beklemediğim şey; sorumluluğun aslında askeriye'de güzel bir şey olduğuydu.
ben ulaştırma bölüğünün bölük çavuşuydum. yazıcıyla beraber çarşıları ayarlar, haftasonu ve tatil günlerinde de "hangi göreve kim gidecek" planlamasını yapardım. bu herhangi bir oto bölüğünde alabileceğiniz en büyük güçtür. evet, bölük çavuşu olmak demek, bölükteki askerler sıçtığında senin azar yemen demek, evet bölük çavuşu olmak demek, görevlerden birinde sıkıntı yaşandığında yine senin azar yemen demek. Ama, bulunduğunuz bölükte böyle bir güce sahip olmanız, oradaki uzun dönem çocukların kaderini belirleyebilmek kesinlikle elinizde bulunmasını isteyeceğiniz bir güç. kimse size komutanım çekmeyecek, ama sürekli komutanlarla beraber çalışacak (belli bir süre elense-göte parmak) ve yine o uzun dönem askerlerin isteklerini/istemediklerini komutanları manipule ederek oldurabilir ve engelleyebileceksiniz. dolayısıyla, sorumluluk almanın iyi ve kötü yanları var. kötü yanı, ilk 1 ay sıkıntı çekecek ama işin piçliğini öğrendiğinizde, kalan 3 ay çook rahat edeceksiniz.
bizimle aynı bölükte bir kısa dönem arkadaşımız daha vardı. iş paylaşımında her şeyden kaçmayı başardı, bizim sıkıntı çektiğimiz ilk alışma döneminde adam "ye, iç, yat" takılıyordu ama maalesef askeriyede hiçbir şey yapmazsanız her şeyi yaparsınız. bu adam, askerliğin geri kalanının bir kısmında çaycı, bir kısmında araba yıkamacı oldu. kimsenin yapmak istemediği ayak işlerini yaptı. dolayısıyla, ustalıkta bir işi gözünüze kestirin ve alın en kötü.
uzun dönem askerler ayrı bir muhabbet. çocuklar daha. ve 15 ay orada geçireceklerken, senin gelip 5 ayda gitmeni kabullenemiyorlar gayet doğal bir şekilde. bu noktada laf dalaşı gibi şeylerden uzak durun. çok içli dışlı olmayın, çok uzak da durmayın. ince bir çizgi var samimiyet konusunda, o çizgiyi geçerseniz sıçtınız. zaten pek ortak bir yön bulamayacaksınız, içli dışlı olmak da zor.
komutanlarla aranız iyi olsun. komutanım diyin, yalakalık yapın, sizden daha az maaş alan birine çay vermek zorunuza gitmesin, gidin verin. ilk hafta verirsiniz, sonraki zamanlar ıslık çalıp çayı getirtirsiniz zaten, problem değil.
çıktıktan sonra...
"karıya" gidin ne bileyim :)
şaka bir yana, benim askerliğim çok rahattı. çok şükür, kazasız belasız atlattık. ben askere gitmeden önce bu tip blog yazılarını okuyup, askerlik hakkında fikir edinmeye çalışıyordum. maalesef sizin yaşayacaklarınız benimkilerle aynı olmayacak. belki daha fazla rahat edeceksiniz, belki de hayatını tehlike yaşadığınız bir yere düşeceksiniz. dolayısıyla her şeye hazırlıklı olun.
0 notes
emre-dev · 11 years
Text
I have a story. A good one.
"We all make our choices in life, the hard thing to do is live with them"
şu girdinin tarihi; muhtemelen hayatımdaki en genç ve en özgür olduğum yaşlarda, günlerce/aylarca düşünüp ciddi anlamda istediğim bir şey için "hiçbir şey" yapmama kararı almama gelsin.
birkaç sene sonra, 30 yaş depresyonunda belki, geriye dönüp tekrar bakalım şu girdiye. dursun şimdilik kenarda.
0 notes
emre-dev · 11 years
Text
python, unicode_tr, türkçe karakter destekli kucultme buyultme
python 2.x serisinde, her seyi unicode kullansaniz da, locale'yi **tr_TR.UTF-8** olarak ayarlasaniz da, ı ve i harfleri için lower(), upper() ve capitalize() metodlari dogru bir sekilde calismiyor. zamanında bunun icin bugs.python.org'ta bir[ issue](http://bugs.python.org/issue1528802) acilmis ve İsmail Donmez, aslında sorunu tekrar etmeyen bir deneme ile sorunun olmadigini dahi [belirtmis.](http://bugs.python.org/issue1528802#msg55476) maalesef, _cartman was not right._
Tumblr media
konunun detaylarina girmeyecegim, ama guzel bir ozet [burada](http://www.codinghorror.com/blog/2008/03/whats-wrong-with-turkey.html) mevcut. su zamana kadar bu problemi cozmek adına python'i ilk ögrendigim zamanlarda yazdigim ufak bir sinifi kullaniyor(d)um, bugun [isyerinde](http://coolshark.com) aynı problem ile karsilasinca built-in bir sinif olan unicode()'u extend edip bu problemleri cozen bir modul hazirladim. basitce unicode string'leri unicode() degil de unicode_tr() ile init edip mevcut fonksiyonlarda **ı-İ** problemine maruz kalmadan islerinize devam edebilirsiniz. kodlar ve ornekler [burada](http://github.com/emre/unicode_tr).
0 notes
emre-dev · 11 years
Text
lurker, mysql-python for humans
It's a common fact that mysql-python just doesn't have a good api. Since I play with it a lot, I have made a simple wrapper over python-mysql to make this experience better. It's not rocket science, just added some caching options, configuration objects, built-in singleton support and more *meaningful* method names. installation and a quick tutorial is up [on the project page](https://github.com/emre/lurker/).
0 notes