<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6020533212806666886</id><updated>2012-02-17T06:23:26.149+02:00</updated><category term='C++'/><category term='програмиране'/><category term='начало'/><category term='template'/><category term='расизъм'/><category term='общество'/><title type='text'>~/.Trash</title><subtitle type='html'>ще изхвърлям непотребни мисли от главата си да не вземе да се задръсти много</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-3498827525106236120</id><published>2012-02-02T00:01:00.000+02:00</published><updated>2012-02-02T00:01:12.444+02:00</updated><title type='text'>Act 4 ACTA</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Ако сте чували за SOPA и PIPA (популярно главно в САЩ), то ACTA може да се нарече техен еквивалент в ЕС.&lt;br /&gt;&lt;br /&gt;За да се запознаете по-добре гледайте:&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/TVWM4TBejmY" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;След което може да прочетете какво казват по въпроса &lt;a href="http://www.gatchev.info/blog/?p=1342"&gt;Григор Гачев&lt;/a&gt;, &lt;a href="http://yurukov.net/blog/2012/01/27/acta-ili-kak-se-obirat-choveshki-pra/"&gt;Йордан Юруков&lt;/a&gt;, &lt;a href="http://nellyo.wordpress.com/2012/01/30/acta-23/"&gt;Нели Огнянова.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Накрая може да дойдете на &lt;a href="http://www.dariknews.bg/view_article.php?article_id=847585&amp;amp;audio_id=100926"&gt;протеста&lt;/a&gt; по случая - 11:00 часа на 11 февруари, НДК.&lt;br /&gt;&lt;br /&gt;Междувременно докато чакате да дойде протеста може да &lt;a href="http://zamunda.net/"&gt;метнете едно писмо до евродепутатите&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;До момента съм получил положителен отговор от &lt;i&gt;Евгени Кирилов&lt;/i&gt;. Следващия път като гласувате за евродепутати да го имате предвид!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-3498827525106236120?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/3498827525106236120/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=3498827525106236120' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/3498827525106236120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/3498827525106236120'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2012/02/act-4-acta.html' title='Act 4 ACTA'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/TVWM4TBejmY/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-7254719396374507892</id><published>2011-12-11T16:28:00.001+02:00</published><updated>2011-12-11T16:57:07.099+02:00</updated><title type='text'>Code retreat #3</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;На 3ти декември се проведе &lt;a href="http://software-society.com/coderetreat/"&gt;Code Retreat #3&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Събрахме се 20тина души на различно ниво, с основната идея да се осъвършенстваме като програмисти. За повечето &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;TDD&lt;/a&gt; беше нова концепция, така че основния фокус беше върху нейното овладяване.&lt;br /&gt;&lt;br /&gt;Ще опиша накратко какво научих от срещата:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Тестването е хубаво нещо. Ако имате възможност - правете го. Не че не го знаех това и преди, но сега е по-затвърдено :)&lt;/li&gt;&lt;li&gt;Тестовете са идеалния начин да се рефакторира кода. Причината е, че при наличие на тестове сме малко по-спокойни и сме готови да направим по-големи промени на кода.&lt;/li&gt;&lt;li&gt;Писането на fake-ове, с други думи код, който не е верен в общия случай, но прави така, че тестовете да минават, е установена практика. До колко съм съгласен с нея още не знам :)&lt;/li&gt;&lt;li&gt;TDD не е сребърен куршум. Според мен трябва да се използва с мярка. Понякога влагането на малко повече време в началото за взимане на важни дизайнерски решения ще се отплати многократно по-късно. Това, че TDD се фокусира върху конкретното следващото нещо, което трябва да се имплементира, и това по някакъв начин ни успокоява, защото имаме да мислим за малко неща е хубаво, но според мен е твърде силно опростяване.&lt;/li&gt;&lt;li&gt;Тестовете са хубав начин за комуникация. Може би много по-добър от вербалната комуникация, защото 1) стоят в репозиторито и 2) могат да бъдат изпълнени. Ако има възможност да се генерира документация и примери от тестове аз съм "за" с 2 ръце. Също - ако може да се намали изпращането на мейли, чатове и вербална комуникация между членовете на един екип за сметка на повече и по ясни тестове, "за" съм с 3 ръце :)&lt;/li&gt;&lt;/ul&gt;В заключение, TDD е малко или много свързано с писане на тестове. Ако имате удобен начин да пишете тестове не ви коства много да пробвате TDD. Проблема в момента е, че практиката да се пишат тестове не е добре улегнала в повечето проекти, и ако решите да пишете patch за проект, който не ползва тестове, шансовете са че и вие няма да напишете тест, защото първоначалното усилие по изграждането на условия за тестване не е малко. От друга страна ако проекта ползва тестове, то направо е престъпление да го допълвате, без да пишете тестове към него, даже в някои случаи няма да ви позволят.&lt;br /&gt;&lt;br /&gt;Така че, ако имате възможност да пишете тестове -- пробвайте TDD. Ако не, поне се старайте новите проекти в които участвате да имат изградена система за тестване, и ползвайте TDD в тях :) Ако TDD не ви харесва, нека това не подбива мнението ви за тестването по принцип.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-7254719396374507892?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/7254719396374507892/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=7254719396374507892' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/7254719396374507892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/7254719396374507892'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2011/12/code-retreat-3.html' title='Code retreat #3'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-693290582797613281</id><published>2011-11-30T12:33:00.001+02:00</published><updated>2011-11-30T15:11:53.566+02:00</updated><title type='text'>Няколко проблема</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;p&gt;Това е превод на &lt;a href="http://iskren.info/reality"&gt;/reality&lt;/a&gt;. Основната статия щеостане на английски и ще добавям още информация, така че ако се интересуватеможе да хвърляте по едно око и там.&lt;/p&gt;&lt;h1&gt;Мотивация&lt;/h1&gt;&lt;p&gt;Нещо ме човърка от вътре. Наблюдавам света около мен и виждам много проблемии малко решения. Виждам как решенията създават по-големи проблеми, от тезикоито решават. С други думи -- виждам, че състоянието ни се влошава вместо дасе подобрява. Ще отбележа, че въобще не говоря за България конкретно --проблемЪТ е глобален.&lt;/p&gt;&lt;p&gt;Също наблюдавам, че вместо хората да се обединят срещу общите си проблеми тепредпочитат да влезнат в коловоза на ежедневието, да си затворят очите занещата, които ги притесняват и да се опитат да мислят положително. Защото&amp;quot;всичко ще се оправи, не се притеснявай&amp;quot; или пък &amp;quot;ами това хич няма да завършидобре, обаче аз какво мога да направя по въпроса&amp;quot;.&lt;/p&gt;&lt;p&gt;Друг важен момент е подреждането на проблемите по важност. Докато &amp;quot;обувките миубиват&amp;quot;, &amp;quot;шапката ми не си отива по цвят със шала&amp;quot; и &amp;quot;не съм подготвен заоперативната среща утре&amp;quot; може би заслужават част от вниманието ни, проблемикато не функционалността на икономика, базирана върху непрестанен растеж,ерозията на почвата породена от агресивни селскостопански методи, изчерпванетона евтината и удобна енергия под форма на нефт и природен газ и глобалнотозатопляне не са за игнориране.&lt;/p&gt;&lt;p&gt;В този пост ще изложа съвсем на кратко една част от по-важните според менпроблеми. Това няма за цел да те стресира или натъжи, а по-скоро да теинформира.&lt;/p&gt;&lt;h1&gt;Икономика&lt;/h1&gt;&lt;p&gt;Измерването на просперитет на базата на растежа на дадена икономика имаразрушително действие върху природните ресурси и е напълно неустойчивов дългосрочен план.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=XnXZzx9pAmQ&amp;feature=results_main&amp;playnext=1&amp;list=PL7E8A774DA8435EEB"&gt;Crash Course&lt;/a&gt;Клипчета от 5 до 16 разглеждат икономическите проблеми, главно в Америка.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=ZPWH5TlbloU"&gt;The American Dream by the Provocateur Network&lt;/a&gt;Забавно клипче на тема федерален резерв, банки, заеми дълг.&lt;/p&gt;&lt;h1&gt;Енергетика&lt;/h1&gt;&lt;p&gt;Евтината енергия под формата на нефт и природен газ е на изчерпване. Нужное да се вземат мерки навреме за да не се стигне до момент, в който 90% оттехниката не може да работи защото не използва подходяща енергия, или защотопросто не може да се произведе достатъчно. Нефтът също се използва и катонаторител за голямо количество селскостопански култури -- ако не се ползвадобивът рязко ще падне.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=cJ-J91SwP8w"&gt;300 years of fossil fuels in 300 seconds&lt;/a&gt;Кратка история на изкопаемите горива.&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Peak_oil"&gt;Wikipedia - Peak Oil&lt;/a&gt;Проверете фактите директно от уикипедиа (и прикачената информация). Peak Oilможе и да е трик на производителите да вдигнат цената, но това, че петролае крайно количество не е.&lt;/p&gt;&lt;p&gt;&lt;a href="http://fora.tv/2011/10/26/Reinventing_the_Leaf_Future_Sources_of_Fuel"&gt;Reinventing the Leaf&lt;/a&gt;Кратка лекция за един научен проект, целящ да добива въглерод директно отсветлина. Интересен е увода, в който професора изтъква, че слънчевата енергияе най-перспективна в дългосрочен план, и единственото друго решение е дастроим по една атомна централа всеки ден в продължени на 40 години :)&lt;/p&gt;&lt;h1&gt;Околна среда&lt;/h1&gt;&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=6JKWhxNoq5k"&gt;Jeremy Rifkin - the crisis that we face&lt;/a&gt;Ако смятате, че глобалното затопляне ще направи зимните спортове по-трудно достъпни, а летните по-приятни, гледайте това видео!&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Global_warming"&gt;Wikipedia - Global Warming&lt;/a&gt;&amp;quot;Глобално затопляне&amp;quot; -- това се превърна от проблем, нуждаещ се от решениев buzzword. Смятам, че всеки трябва да си набави качествена информация потемата (примерно укипедиа) и да реши сам за себе си сериозността му.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Очаквайте още по темата.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-693290582797613281?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/693290582797613281/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=693290582797613281' title='2 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/693290582797613281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/693290582797613281'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2011/11/blog-post.html' title='Няколко проблема'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-8830606866848087530</id><published>2011-11-10T22:03:00.002+02:00</published><updated>2011-11-16T23:54:02.407+02:00</updated><title type='text'>CoffeeScript + Node.js</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://jashkenas.github.com/coffee-script/"&gt;CoffeeScript&lt;/a&gt; е език, компилиращ се до &lt;a href="https://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt;, със семантична идентация, вдъхновен от &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ако планирате да пишете на &lt;a href="http://nodejs.org/"&gt;Node.js&lt;/a&gt;, инсталацията е доста лесна&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;node.js&lt;/h2&gt;&lt;pre style="border: 1px solid black; background-color: #ccc; font-family: monospace; padding: 5px"&gt;&lt;br /&gt;$ git clone https://github.com/joyent/node&lt;br /&gt;$ cd node&lt;br /&gt;$ ./configure --prefix=~/opt/node &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;$ echo &amp;apos;export PATH="$PATH:$HOME/opt/node/bin"&amp;apos; &gt;&gt; ~/.bash_profile&lt;br /&gt;$ export PATH="$PATH:$HOME/opt/node/bin"&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;npm&lt;/h2&gt;&lt;pre style="border: 1px solid black; background-color: #ccc; font-family: monospace; padding: 5px"&gt;&lt;br /&gt;$ curl http://npmjs.org/install.sh | sh&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;coffee-script&lt;/h2&gt;&lt;pre style="border: 1px solid black; background-color: #ccc; font-family: monospace; padding: 5px"&gt;&lt;br /&gt;$ npm install -g coffee-script&lt;br /&gt;&lt;/pre&gt;Ако всичкия server-side код е на coffee-script директно полвайте &lt;code&gt;coffee&lt;/code&gt; за да го изпълните (вместо &lt;code&gt;node&lt;/code&gt;). Ако искате от javascript файл да require-нете coffee-script файл (без да го компилирате), тогава&lt;pre style="border: 1px solid black; background-color: #cec; font-family: monospace; padding: 5px"&gt;&lt;br /&gt;require('coffee-script');&lt;br /&gt;require('./script'); // assuming you have ./script.coffee&lt;br /&gt;&lt;/pre&gt;За любителите на vim има и &lt;a href="https://github.com/kchmck/vim-coffee-script"&gt;плъгин&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-8830606866848087530?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/8830606866848087530/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=8830606866848087530' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/8830606866848087530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/8830606866848087530'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2011/11/coffeescript-nodejs.html' title='CoffeeScript + Node.js'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-2624359403242156038</id><published>2011-11-10T21:30:00.002+02:00</published><updated>2011-11-10T21:30:36.640+02:00</updated><title type='text'>Селектиране на текст с vim</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Във vi / vim / gvim последната селекция може да бъде селектирана отново с комбинацията &lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;gv&lt;/span&gt; (normal mode).&lt;br /&gt;&lt;br /&gt;При желание може да се автоматизира селектирането след операция за идентация&lt;br /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;vnoremap &amp;lt;tab&amp;gt;&amp;nbsp;&amp;nbsp; &amp;lt;gv &lt;span style="color: #45818e;"&gt;" tab indents&lt;/span&gt;&lt;gv&lt; span=""&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt;vnoremap &amp;lt;s-&lt;/span&gt;&lt;/gv&lt;&gt;&lt;/span&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;tab&amp;gt;&lt;/span&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;gv&lt; span=""&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;gv &lt;span style="color: #45818e;"&gt;" shift-tab unindents&lt;/span&gt;&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Също може да се скача в началото/края на последната селекция&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;`&amp;lt; `&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;- в абсолютното началото/край на селекцията&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;'&amp;lt; '&amp;gt;&lt;/span&gt; &lt;span style="color: black;"&gt;- на първия символ на първия/последния ред на селекцията&lt;/span&gt;&lt;/gv&lt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-2624359403242156038?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/2624359403242156038/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=2624359403242156038' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/2624359403242156038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/2624359403242156038'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2011/11/vim.html' title='Селектиране на текст с vim'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-7484418300388355381</id><published>2011-10-05T18:30:00.000+03:00</published><updated>2011-10-07T00:26:31.575+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='общество'/><category scheme='http://www.blogger.com/atom/ns#' term='расизъм'/><title type='text'>не бъди расист</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;p&gt;Ако си мислиш, че някой етнос / хората, които принадлежат на него, са виновни за каквото и да било, или пък &lt;i&gt;без&lt;/i&gt; тях нещо ще бъде по-добре, чети надолу.&lt;/p&gt;&lt;p&gt;Действията на хората не зависят от етноса им, а от средата, в която живеят. Ще дам нагледен пример. Вземи едно новородено българче и едно новородено циганче и им размени семействата. Т.е. циганчето започва да живее в българско семейство, родители българи, евентуално братя/сестри българи, съседи българи (представете си средно-статистическо българско семейство), а българчето отива да живее в циганското семейство – може би десетина братя/сестри, в една къща, не достатъчно пари за изхранване на всички, вероятно в краен квартал, съседи – други цигански семейства (средно-статистическо циганско семейство).&lt;/p&gt;&lt;p&gt;Сега въпросът е: ще може ли да различите след 15 години българчето от циганите, съдейки по начина, по който се държи (а не по цвят на кожата, например). Ако не може да бъде различено, тогава всеки, който има нещо против циганите по принцип, би трябвало да има и също толкова против това българче. От друга страна, циганчето, което е живяло в българско семейство, има по-големи шансове да завърши училище, евентуално университет, да си намери по-добре платена работа, да живее по-добре с две думи. Разбира се, то най-вероятно ще има проблеми заради цвета на кожата си, но това донякъде може да бъде преодоляно с грим (все пак жените го правят постоянно ;-)).&lt;/p&gt;&lt;p&gt;Опитвам се да кажа, че циганите (или кой да е друг етнос) не са такива, каквито са, заради биологичните си родители, а заради обстановката, в която са се развивали. От една страна, тази среда е създадена от тях самите, но ако в цялата страна имаше само цигани, те нямаше да имат проблем с "циганите", а с "хората". Т.е. средата в която живеят те е, малко или много, повлияна от начина по който се държим ние. Самият факт, че си имат име, по което да бъдат разграничавани, е лош, сам по себе си. Ако средно статистическият българин не е враждебно настроен към циганите, то поне се стреми да има колкото се може по-малко общо с тях. Това изглежда безобидно, но всъщност е в основата на разделението.&lt;/p&gt;&lt;p&gt;Докато всички не се наречем Българи (а следващата логична стъпка е Хора) и не се изправяме пред проблемите, които имаме, без да взимаме под внимание незначителни фактори от историята – кой къде и от кого е роден, родителите му къде и от кого са родени, техните родители и т.н. – няма да постигнем значителен напредък.&lt;/p&gt;&lt;p&gt;Относно медийното покритие на събитията около Кирил Рашков — самият факт, че те бяха толкова добре отразени, не за нещо друго, а защото престъплението е междуетническо (в смисъл, циганин посяга на българин) е плашещ. Просто расизмът се харчи доста добре в България, не се поддавайте! Всеки, който е извършил престъпление трябва да си получи заслуженото, независимо от това от каква народност е, и от каква народност е потърпевшият.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-7484418300388355381?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/7484418300388355381/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=7484418300388355381' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/7484418300388355381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/7484418300388355381'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2011/10/blog-post.html' title='не бъди расист'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-4323091765089717629</id><published>2009-02-19T21:32:00.003+02:00</published><updated>2009-02-19T23:39:05.053+02:00</updated><title type='text'>Искрен on Rails</title><content type='html'>Тук ще напиша набързо решенията на проблемите, който възникнаха при първия ми по-сериозен сблъсък с web-framework-а Rails (предназначен за езика Ruby).&lt;br /&gt;&lt;br /&gt;1. Инсталиране (тук ще карам малко по спомен)&lt;br /&gt;# сдобивате се някак си със rubygems - това е пакетния мениджър на Руби (за линукс потребителите - потърсете за подходящ пакет за любимата ви дистрибуция)&lt;br /&gt;gem update --system # ъпдейтвате rubygems най-вече&lt;br /&gt;gem install rails --version 2.2.2 # инсталирате рейлс&lt;br /&gt;gem install postgresql-pr # инсталирате адаптера за работа с postgres (ако разбира се искате да ползвате postgres - по дефоулт 2.2.2 идва със sqlite3)&lt;br /&gt;gem install rspec-rails # инсталира rspec - най-новия писък на модата, тъй нареченото BDD - Behaviour Driven Development&lt;br /&gt;&lt;br /&gt;2. Предварителни настройване на проекта&lt;br /&gt;rails my_app # създава папка my_app със скелета на цял рейлс проект&lt;br /&gt;# от сега нататък приемам че се намираме в папката my_app, създадена по-горе&lt;br /&gt;haml --rails . # добавя haml към проекта (това е удобен темплейтен език, изглежда по-добре от дефоултния erb)&lt;br /&gt;ruby script/plugin install git://github.com/technoweenie/restful-authentication.git # инсталирате си restful authentication&lt;br /&gt;mv vendor/plugins/restful-authentication vendor/plugins/restful_authentication # !!много важно - променяте името на плъгина (махате му тирето) - без този ред не работи като хората&lt;br /&gt;ruby script/generate authenticated user sessions --rspec # база на аутентикацията (т.е user-и и сесии)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-4323091765089717629?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/4323091765089717629/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=4323091765089717629' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/4323091765089717629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/4323091765089717629'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2009/02/on-rails.html' title='Искрен on Rails'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-4247019809744126111</id><published>2009-01-01T21:41:00.000+02:00</published><updated>2009-01-01T22:01:53.818+02:00</updated><title type='text'>свободна музика?</title><content type='html'>Отдавна не бях блогвал, но стечението на обстоятелствата (което ще опиша след малко) беше предпоставка за това да прегледам блога на Яна и да видя ... линка към моя блог, което пък ми напомни че и аз имам 'таковъ животну' ... както и да е :)&lt;br /&gt;Значи напоследък забелязах че apache-то ми се държи странно (apache е web сървър - демек нещото което като човека X напише в любимия си браузър "http://iskren.info" показва грозна зелена страница). И тъкмо ме бяха обхванали мрачни мисли свързание с форматране, преинсталиране, рестартиране (последното имаше донякъде положителен ефект) когато ми дойде гениална мисъл ... да му погледна log-а. Дам ... като се сетих (толкова късно) направо ми стана гадно, че се познавам.&lt;br /&gt;Та - гледам аз лога на апачето и какво да видя - постоянни request-и от всички краища на планетата, хвърчат към моето apache-нце и то неуморимо ги удовлетворява. И понеже първото на което ми попадна погледа беше достъп на файл в една от директориите на Пешо веднага си казах - той се е разчел нещо. Но уви - след като му писах веднагически, отговори че не той е ровещият се в сървъра. След кратка мисловна пауза и по-подробно разглеждане на лога останових ... че някакви сайтчета индексират моя, за да може да пускат "безплатна музика" на хората, които ги посещават (например http://grooveshark.com).&lt;br /&gt;Следващото нещо което направих, беше да потърся iskren.info в google. След самата страница и мой цитат в блога на Яна, изплуваха и мистериозните сайтове предлагащи безплатна музика, който просто сочеха към сървъра ми. След като се загледах по-подробно в единия от сайтовете, реших да прочета "Terms &amp; conditions" - е да, хората повториха 101 пъти, че музиката не е на техния сървър и те не носят никаква отговорност за нея, нямат никаква връзка с хората, на чиито сървъри е музиката ... итн, итн.&lt;br /&gt;От една страна ОК - имам музика, сложил съм я (вече) за свободно сваляне от http-то, за да мога по-лесно да пусна на някой приятел някоя песничка, която ме е накефила. Обаче това диво адресиране от всевъзможни сайтове, тази популяризация ... няма ли да почукат на вратата след някой друг ден 2-3 гардероба и да поискат нечии хард?&lt;br /&gt;Майната му! Като съм решил да имам общодостъпна музика на компютъра - така ще бъде! Защо трябва само да се крием и да слагаме пароли на всичко? В крайна сметка това е един от плюсовете на това, че не живеем в Америка - страната на неограничените възможности ... на държавата спрямо гражданите й.&lt;br /&gt;За много години на всички (ако някой въобще чете това), и да бъде свободата :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-4247019809744126111?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/4247019809744126111/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=4247019809744126111' title='3 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/4247019809744126111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/4247019809744126111'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2009/01/blog-post.html' title='свободна музика?'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-4893348211805359795</id><published>2008-05-23T22:28:00.011+03:00</published><updated>2008-05-24T00:44:23.667+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='програмиране'/><category scheme='http://www.blogger.com/atom/ns#' term='template'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>&lt;T&gt;emplate magic</title><content type='html'>Просто не мога да се сдържа да не се похваля какво извращение успях да подкарам на C++ наскоро. Става дума за тип, в който може да се слага всеки друг тип (по един във всеки момент) и да се взима текущия тип (като се каже какъв е). Т.е исках да върви подобен код:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;generic x;&lt;br /&gt;x.set (5);&lt;br /&gt;x.get &amp;lt;int&amp;gt; ();//--&gt; 5&lt;br /&gt;x.set (std::string ("alabala"))&lt;br /&gt;x.get &amp;lt;std::string&amp;gt; ();//--&gt; alabala&lt;br /&gt;&lt;br /&gt;//type checking&lt;br /&gt;x.is &amp;lt;int&amp;gt; ();//false&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Та значи горното нещо в началото ми се струваше сън, докато не осъзнах, че е напълно реално - нужни са само 2 помощни класа (т.е общо 3) и горният код РАБОТИ.&lt;br /&gt;&lt;br /&gt;Накратко:&lt;br /&gt;1. Абстрактен базов клас, поддържащ методи &lt;span style="font-family:courier new;"&gt;set&lt;span&gt; и &lt;span style="font-family:courier new;"&gt;get&lt;/span&gt;, приемащи/връщащи &lt;span style="font-family:courier new;"&gt;void *&lt;/span&gt;&lt;br /&gt;2. темплейтен наследник на горния клас, в който се пази указател към &lt;span style="font-family:courier new;"&gt;T&lt;/span&gt;, но самите функции разбира се връщат пак &lt;span style="font-family:courier new;"&gt;void *&lt;/span&gt; (защото са в йерархия)&lt;br /&gt;3. клас wrapper на горния, който не е темплейтен, но съдържа темплейтнати функции (т.е класа не е темплейт, но някой негови функции са), който държи един указател към базата и когато поискат нещо от него той прави &lt;span style="font-family:courier new;"&gt;dynamic_cast&lt;/span&gt; до наследник от искания тип, след което каства резултата към нещо човечко (т.е &lt;span style="font-family:courier new;"&gt;void * --&amp;gt; Т * --&amp;gt; Т&lt;/span&gt;). Хубавото е, че примерно &lt;span style="font-family:courier new;"&gt;set&lt;/span&gt; функцията сама разбира типа на шаблона (дедуцира го от аргумента) - затова няма смисъл да го пишем изрично (т.е &lt;span style="font-family:courier new;"&gt;set &amp;lt;int&amp;gt; (4)&lt;/span&gt;. За &lt;span style="font-family:courier new;"&gt;get&lt;/span&gt; функцията обаче е задължителен (е няма пълно щастие :) ).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Хубавото тука е, че се извършва type checking от компилатора (при &lt;span style="font-family:courier new;"&gt;dynamic_cast&lt;/span&gt;), както и освобождаването на заделената памет от виртуалния деструктор на 2рия клас - т.е общо взето прехвърляме задълженията си към компилатора (както и според мен трябва да се прави).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;п.с.: За да е малко по-полезно това чудо добавих и функция, която преобразува всеки тип до стринг (за да мога да печатам по лесно наред). Та наложи се да сложа и темплейт-специализация на тази вункция за типа int (т.е функцията &lt;span style="font-family:courier new;"&gt;to_str&lt;/span&gt; за едни типове да работи по един начин, за int да работи по друг). Тази функция, се третира като нормална, и за това трябва да стой в cpp файл, който се линква отделно (т.е не в h/hpp файла със шаблона, защото ако се инклудне от поне 2 места става мазало). По принцип темплейтите трябва да са написани в един h файл, защото компилатора не позволява да ги разделяме (&lt;span style="font-family:courier new;"&gt;extern template&lt;/span&gt; не е имплементирано почти никъде), но точно специализациите може (и трябва) да се пишат в отделен файл - иначе казва redefinition of ...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#include &amp;lt;cstdio&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;&lt;br /&gt;class base {&lt;br /&gt;public:&lt;br /&gt; virtual void *get () = 0;&lt;br /&gt; virtual void set (const void *) = 0;&lt;br /&gt; virtual ~base () {}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;template &amp;lt;typename T&amp;gt;&lt;br /&gt;class derived : public base {&lt;br /&gt; T *_data;&lt;br /&gt;public:&lt;br /&gt; derived () : _data (NULL) {}&lt;br /&gt; virtual void *get () {&lt;br /&gt;  return static_cast &amp;lt;void *&amp;gt; (_data);&lt;br /&gt; }&lt;br /&gt; virtual void set (const void *data) {&lt;br /&gt;  delete _data;&lt;br /&gt;  _data = new T (*static_cast &amp;lt;const T *&amp;gt; (data));//copy constructor&lt;br /&gt; }&lt;br /&gt; virtual ~derived () {&lt;br /&gt;  delete _data;&lt;br /&gt; }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;class wrapper {&lt;br /&gt; base *_p;&lt;br /&gt;public:&lt;br /&gt; wrapper () : _p (NULL) {}&lt;br /&gt; template &amp;lt;typename T&amp;gt; T get () {&lt;br /&gt;  return *static_cast &amp;lt;T *&amp;gt; (dynamic_cast &amp;lt;derived &amp;lt;T&amp;gt; *&amp;gt; (_p)-&amp;gt;get ());&lt;br /&gt; }&lt;br /&gt; template &amp;lt;typename T&amp;gt; bool is () {&lt;br /&gt;  return dynamic_cast &amp;lt;derived &amp;lt;T&amp;gt; *&amp;gt; (_p) != NULL;&lt;br /&gt; }&lt;br /&gt; template &amp;lt;typename T&amp;gt; void set (const T &amp;nv) {&lt;br /&gt;  delete _p;&lt;br /&gt;  _p = new derived &amp;lt;T&amp;gt;;&lt;br /&gt;  _p-&amp;gt;set (&amp;nv);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main () {&lt;br /&gt;&lt;br /&gt; wrapper x;&lt;br /&gt; x.set (5);&lt;br /&gt; printf ("%d\n", x.get &amp;lt;int&amp;gt; ());&lt;br /&gt;&lt;br /&gt; x.set (std::string ("alaabala"));&lt;br /&gt; printf ("%s\n", x.get &amp;lt;std::string&amp;gt; ().c_str ());&lt;br /&gt; printf ("%d %d\n", (int)(x.is &amp;lt;int&amp;gt; ()), (int)(x.is &amp;lt;std::string&amp;gt; ()));&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-4893348211805359795?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/4893348211805359795/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=4893348211805359795' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/4893348211805359795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/4893348211805359795'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2008/05/emplate-magic.html' title='&amp;lt;T&amp;gt;emplate magic'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-8472588677732271369</id><published>2008-04-30T10:19:00.008+03:00</published><updated>2008-05-23T22:55:58.639+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='програмиране'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>pointer-to-member-function C++</title><content type='html'>&lt;span style="font-size:78%;"&gt;(който не разбира заглавието - става дума за указатели към член-функции в класове на C++ - който и това не разбира да го прескочи :))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ако искате да напишете код, който да работи с даден обект и да вика негова функция, обаче самата функция да може да се променя (т.е да напишете по-обща функция един вид) тогава е полезно да може да предавате така наречения указател-към-член-функция. В следните няколко парченца код ще опитам да покажа как точно става това граматически - на книжовен C++, защото лично аз имах малко проблеми докато докарам синтаксиса преди няколко дена.&lt;br /&gt;&lt;br /&gt;Основният проблем е, че типът на една функция, която е в клас не е просто &lt;span style="font-family:courier new;"&gt;връщана-стойност (*) (аргуенти)&lt;/span&gt;, защото тези функции получават един неявен указател &lt;span style="font-family:courier new;"&gt;this&lt;/span&gt;, който сочи към данните на обекта. Освен това този указател е от различен тип за всеки клас (т.е не може просто да кажем че това е member функция и да стане) - трябва като цитираме съответна функция да кажем и от кой клас е:&lt;br /&gt;&lt;pre&gt;името-на-класа::името-на-функцията&lt;/pre&gt;.&lt;br /&gt;Сега вече типа става:&lt;br /&gt;&lt;pre&gt;връщана-стойност (име-на-клас::*име-на-функция) (аргументи) [const]&lt;/pre&gt;&lt;br /&gt;забележете, че ако функцията е &lt;span style="font:courier;"&gt;const&lt;/span&gt; трябва да го кажем изрично - защото от това зависи типа на указателя this, който както казах неявно се предава.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;class cls {&lt;br /&gt;   int mem_fun (const char *) const;&lt;br /&gt;   static void static_mem_fun (double, char);&lt;br /&gt;};&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ако искаме да подадем &lt;span style="font-family:courier new;"&gt;mem_fun&lt;/span&gt; на някоя фунция (за да може тя да вика &lt;span style="font-style: italic;"&gt;точно&lt;/span&gt; тази функция за даден обект - обекта отделно трябва да го дадем разбира се) трябва да я приемем по следния начин:&lt;br /&gt;&lt;pre&gt;void mem_fun_user (const cls &amp;amp;c, int (cls::*f) (const char *) const) {&lt;br /&gt;    /*по този начин я викаме - обърнете внимание на скобите и звездата*/&lt;br /&gt;    /*ако c беше указтел към клас тогава викаме със '-&gt;*' */&lt;br /&gt;    int p = (c.*f) ("haha");&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;сега остава да покажа как се предава :)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;void foo () {&lt;br /&gt;    cls c;&lt;br /&gt;    /*не слагайте допълнителни скоби, или аперсанта другаде - НЕ РАБОТИ - точно както съм го дал така :)*/&lt;br /&gt;    mem_fun_user (c, &amp;amp;cls::mem_fun);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Можете да подавате и указатели към оператори - просто трябва да ги изпишете (&lt;span&lt;br /&gt;style="font-family:courier new;"&gt;&amp;amp;rational::operator +&lt;/span&gt;) - държат се като обикновенни функции (но се викат по интересно ;)).&lt;br /&gt;&lt;br /&gt;При статичните функции е по-лесно - защото при тях няма този скрит указател &lt;span style="font-family:courier new;"&gt;this&lt;/span&gt; който казва на кой клас е. Т.е техния тип е като на обикновенна функция, а за да ги подадете пишете &lt;span style="font-family:courier new;"&gt;име-на-клас::име-на-функция&lt;/span&gt; както при член функциите &lt;br /&gt;&lt;br /&gt;Ето една страничка с (може би) малко по-подробна информация по въпроса:&lt;br /&gt;&lt;a href="http://www.parashift.com/c++-faq-lite/pointers-to-members.html"&gt;http://www.parashift.com/c++-faq-lite/pointers-to-members.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-8472588677732271369?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/8472588677732271369/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=8472588677732271369' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/8472588677732271369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/8472588677732271369'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2008/04/pointer-to-member-function-c.html' title='pointer-to-member-function C++'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6020533212806666886.post-5281714801956002390</id><published>2008-04-28T10:25:00.000+03:00</published><updated>2008-04-28T10:31:24.966+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='начало'/><title type='text'>Сефтето на блога</title><content type='html'>Ето го и първия пост :) Дано не зарежа и това начинание, както много други.&lt;br /&gt;Като ми дойде музата пак ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6020533212806666886-5281714801956002390?l=iskrenc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iskrenc.blogspot.com/feeds/5281714801956002390/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6020533212806666886&amp;postID=5281714801956002390' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/5281714801956002390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6020533212806666886/posts/default/5281714801956002390'/><link rel='alternate' type='text/html' href='http://iskrenc.blogspot.com/2008/04/blog-post.html' title='Сефтето на блога'/><author><name>Искрен Ивов Чернев</name><uri>http://www.blogger.com/profile/10935045721502671228</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
