Постове 6 - 10 от 11 с таг Learn

Aug 21

Някои да не е чувал за MIT – Massachusetts Institute of Technology? Това е един от най-елитните университети в света.

Та, днес попаднах на това постче:

MIT’s Introduction to Algorithms: Lectures 1 and 2

тук има връзки към лекции от MIT на тема Алгоритми:

http://video.google.com/videoplay?docid=-2333306016564732003
http://video.google.com/videoplay?docid=6724701313234177393

и както автора казва ги има на http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/CourseHome/index.htm – под CC лиценз :)

Тъй като в университета, където уча, за алгоритми беше отделен “цял” семестър, а и по принцип не чета много за тях из Интернет, се чувствам не в свои води. Да се надяваме това да се промени.

Jul 12

Аrray в PHP беше нещото което най-много ми хареса в php когато започвах да се занимава с програмиране. С времето обаче разбрах че array са много странно нещо, те са кръстоска между стандартния масив и hash таблици. По този въпрос има много материали в Интернет, където се казват плюсовете и минусите. Но това което искам се га да покажа е малко по различен поглед към Array.

Обикновено аз както и голяма част от PHP дивелопърите ползваме масивите или как нормален масив или като hash таблица, но много рядко като смесено нещо. Но при определени ситуации е доста полезно да се ползват като и двата типа на работа.

Например имам едни класове с който си дефинирам таблиците в базата данни и те генерират sql код и т.н.:

$this->createTable('product_brands', array(
'name'	=> array('string', 'limit' => 7),
'ord'		=> 'int',
'visible'	=> 'boolean',
));

Което за мен и моите колеги е доста ясно и разбираемо. Още повече че самото “разчитане” на типа на всяка колона е много лесно:

function column($name, $options){
$options = (array) $options;
$type	 = isset($options['type']) ? $options['type'] : $options[0];

// ....
}

Друго място на което ги ползвам е в един метод класа ми за работа с базиданни:

// WHERE visible = '1'
$db->where("'visible'='1'");
// WHERE category_id = '$id' AND visible = '1'
$db->where(array('category_id'	=> $id, 'visible' => 1));
// WHERE name LIKE '%{$name}%' AND category_id = '$id' AND visible = '1'
$db->where(array("name LIKE '%{$name}%'", 'category_id'	=> $id, 'visible' => 1));

Като where трябва да върне sql условие. А самия where метод е доста простичко написан:

function where($cond) {
if (!$cond)
return '';

if (!is_array($cond))
return 'WHERE ' . $cond . ' ';

$vals = array();
foreach($cond as $field => $value) {
$vals[] = is_numeric($field) ? $value : $field . '=' . $this->quote($value);
}

return 'WHERE ' . join(' AND ', $vals) . ' ';
}

update: Сега се сетих, че може array да се ползват по подобен начин и в новата версия на tag функцията ми, с която генерирам html код:

// <a href="myLink">some</a>
tag(array('a', 'href' => 'myLink', 'some');
// <a href="myLink">some</a>
tag(array('a', 'some', 'href' => 'myLink');
// <span>text</span>
tag(array('span', 'text');
// <img src="image.png" alt="" />
tag(array('img', 'src' => 'image.png', 'alt' => '');

п.п. доста от тези примери ще изглеждат още по-добре ако се сбъднат желанията ми от PHP6 whishlist ( особено точки 4 или 7 ).

Jun 24

Днес чистейки старите си bookmark-oве, попаднах на тази интересна статия от 09 Май 2008 (малко старичка):

http://www.infoq.com/news/2008/05/should-you-learn-languages

В нея се задава въпросът дали има смисъл и дали е добре да владеем повече програмни езици. Там попадам на следния цитат (няма да го превеждам, че да не се загуби смисъла):

The programming languages, or rather language types, you understand (not necessary is most fluent in), tends to steer your thinking. According to natural language researchers, if there is a word missing (or a category of words) from a language, people have a hard time thinking about the concepts that the missing words represents. Paul Graham states approximately the same thing about programming languages.

Това ми напомня че преди години ми разказваха една книга (която така и не можах да прочета :( ). В нея се разправяло за държава (или остров беше май), където хората, които го управлявали контролирали населението като махали думи от речниците. Основната идея е че като не знаеш нещо или по точно като не знаеш как се казва е много трудно (а за доста хора и невъзможно) да си помислиш за него. Като например ако не знам, че има дума за “сладолед”, как мога въобще да си помисля, че искам сладолед. Или във контекста на книгата, като не знаят какво е бунт и свобода как могат хората да си помислят за тях.

Ако се върнем в IT света. Знанията който придобих при работата с JavaScript или Ruby  ми помогнаха страшно много с PHP, като прилагам (до колкото е възможно) част от семантиката в тези езици. Напоследък като се заглеждам по Python, гледам по малко по-различен начин на организацията на кода и други такива. А знанията от предишни езици страшно много ми помогнаха да оценя някои добри неща (да, даже и такива неща има) в Java. А и все пак всеки средно статистически developer му се налага да работи поне с 2-3 езика на куп (PHP/ASP.NET/JAVA/Ruby/Python , JavaScript, ActionScript 2/3, …).

И както чух от една лекция на Светлин Наков:

След 7-8 мия програмен език, останалите се учат за 1-2 дена :D .

Jun 23

Днес пак ме попитаха: Как да науча програмния език JavaScript? и за пореден път пратих същите лекции и книжки който винаги пращам при подобен въпрос. За това реших да ги сложа в NeXt, че поне да не се налага да ги търся из Интернет.

Douglas Crockford, работи като JavaScript evangelist (това не бългаски е нещо като проповедник, но …). Също така е създател на JSON и според много хора е нещо като “Кръсника” на JavaScript. Не е зле (даже задължително, според мен) да се прочете и неговата книга JavaScript: The Good Parts.

Douglas Crockford — “The JavaScript Programming Language”

Лекцията в video.yahoo.com:

http://video.yahoo.com/video/play?vid=111593
http://video.yahoo.com/video/play?vid=111594
http://video.yahoo.com/video/play?vid=111596

Като m4v файлове:

http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-tjpl-1.m4v
http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-tjpl-2.m4v
http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-tjpl-3.m4v
http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-tjpl-4.m4v

Файлове с презентацията:

http://yuiblog.com/assets/crockford/javascript.zip


Douglas Crockford — “Advanced JavaScript”

Лекцията в video.yahoo.com:

http://video.yahoo.com/video/play?vid=111585
http://video.yahoo.com/video/play?vid=111586
http://video.yahoo.com/video/play?vid=111587

Като m4v файлове:

http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-advancedjavascript-1.m4v
http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-advancedjavascript-2.m4v
http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-advancedjavascript-3.m4v

Файлове с презентацията:

http://yuiblog.com/assets/crockford/advancedjavascript.zip


Douglas Crockford — “An Inconvenient API: The Theory of the DOM”

Лекцията в video.yahoo.com:

http://video.yahoo.com/video/play?vid=111582
http://video.yahoo.com/video/play?vid=111583
http://video.yahoo.com/video/play?vid=111584

Като m4v файлове:

http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-domtheory-1.m4v
http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-domtheory-2.m4v
http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-domtheory-3.m4v

Файлове с презентацията:

http://yuiblog.com/assets/crockford/theory.zip


Douglas Crockford — “Quality”

Лекцията в video.yahoo.com:

http://video.yahoo.com/watch/529579

Като m4v файлове:

http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-quality.m4v


Douglas Crockford — “JavaScript: The Good Stuff”

Лекцията в video.yahoo.com:

http://video.yahoo.com/video/play?vid=630959

Като m4v файлове:

http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/crockford-goodstuff.m4v


Douglas Crockford — “The State of Ajax”

Лекцията в video.yahoo.com:

http://yuiblog.com/blog/2007/11/06/video-crockford/

Като m4v файлове:

http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/stateofajax.m4v


Browser Wars Episode II: Attack of the DOMs

Лекцията в video.yahoo.com:

http://video.yahoo.com/video/play?vid=287660

Като m4v файлове:

http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/browserwars-20070228.m4v


Pro JavaScript Design Patterns by Dustin Diaz

Тази книга също е страшно добра за “по-сериозен” JavaScript. Написана е от Dustin Diaz, който до колкото знам преди време работи в Yahoo!, а сега е в Google.

http://jsdesignpatterns.com/

Файловете с примери от книгата
http://jsdesignpatterns.com/mint/pepper/orderedlist/downloads/download.php?file=http%3A//jsdesignpatterns.com/code.zip


И още няколко полезни връзки:

http://www.3site.eu/doc/
http://ejohn.org/blog/javascript-talk-at-northeastern/

Apr 24

Днес видях http://www.37signals.com/svn/posts/981-the-secret-to-making-money-online това презенация на David Heinemeier Hansson във  Startup School 08. От там се насочих към целия списък със презентациите http://omnisio.com/startupschool08. Там освен DHH ( създателя на Rails, за който не знае) има презентации на доста интересни хора като създателя на Gmail, Amazon, Netscape и други подобни.

Освен страхотните презентации и лекции, другото нещо което ме впечатли е видео плеъра. Освен стандартното показване на видео, по време на видеото вървят и слаидовете. Като може да се избира какво да на кое да се фокусира. Има и коментари, които са наистина дразнещи, но е добре че може да се спират.