Постове 6 - 9 от 9 в категория 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 ).

Jul 12

JRuby представлява JAVA имплементация на езика Ruby. Някои друг път ще пиша по-подробно защо хората правят такива неща и дали има смисъл от тях.

Как се инсталира JRuby за  Windows XP, много лесно :) . Въпреки че за хората който са свикнали да е само next -> next -> ok! няма да е толкова лесно.

  1. Слагате системната променлива JAVA_HOME, ако  я нямате дефинирана вече. Това става като дадете:
    My Computer -> Properties -> Advanced -> Environment Variables
    Давате New (като решите дали искате тази променлива да я има само за вашия акаунт или да я има за всичките възможни)
    Variable name: JAVA_HOME
    Variable value: пътя до JDK -a ви ( в моя случай е C:\Program Files\Java\jdk1.5.0_14 )
    ( не затваряйте
    Environment Variables панела, защото пак ще имаме работа в него)
  2. Изтегляте си от http://dist.codehaus.org/jruby/ последната версия на JRUBY ( за момента е тази http://dist.codehaus.org/jruby/jruby-bin-1.1.2.zip.
  3. Разахивирате съдържанието на изтегления архив в избрана от вас директория. Примерно C:\JRuby.
  4. Отворете Environment Variables панела (или се върнете от него ако не се го затворили при стъпка 1):
    My Computer -> Properties -> Advanced -> Environment Variables
  5. Добавете нова променлива:
    Variable name: JRUBY_HOME
    Variable value: директорията в която разархивирахте JRuby ( Примерната
    C:\JRuby)
  6. Променете вече съществуващата променлива PATH като добавите в нея пътя до папката bin на JRuby(C:\JRuby\bin). (пътищата там се разделят с ‘;’)
  7. Записвайте и затваряйте Environment Variables.

Това е!

Сега един бърз тест. Направете един файл което се казва test.rb в C: и напишете в него това:

include Java

import javax.swing.JFrame
import javax.swing.JLabel

frame = JFrame.new 'My first application';
frame.get_content_pane.add JLabel.new('JRuby works!')
frame.set_default_close_operation JFrame::EXIT_ON_CLOSE
frame.pack
frame.visible = true

Стартирайте cmd-то и напишете:
>jruby C:\test.rb

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/