1. Пятница, 11 июня

      Что изучать?

      Несколько раз за последний месяц меня спросили «что перспективней изучать» в вариациях .net vs Java, django vs Yii и так далее. Спорить про плюсы той или иной платформы можно долго и разработчики это успешно делают, устраивая бесконечные холивары. А ведь на самом-то деле изучать надо в первую очередь совершенно другие вещи. Те, что применимы ко всем платформам.

      Читаем


    1. Вторник, 11 мая

      Минимальный тестовый набор

      Поиск ошибок и их устранение — совершенно типичная задача. А на каждую типичную задачу существует своё решение. Сегодня об этом решении, применительно к вёрстке, написал Chris Coyier.

      Заключается оно в составлении минимального тестового набора, то есть самого минимального набора условий, на котором можно воспроизвести проблему. После его составления, либо проблема полностью локализуется, либо находится ошибка в продукте, лежащем в основе вашего.

      Читаем


    1. Вторник, 27 апреля

      Mixin в PHP

      В Ruby есть довольно занимательная штука, называемая mixin, позволяющая «подмешивать» в класс методы модуля. Чем-то это напоминает множественное наследование, но более точным будет назвать это делегированием методов.

      В PHP достичь того же можно при помощи магического метода __call, а использовав __set, __get, __isset и __unset можно реализовать делегирование свойств.

      Читаем


    1. Пятница, 12 февраля

      MVC: Front Controller, Controller и Router

      В прошлый раз я описал построение простейшего, но довольно функционального компонента View. В этот раз займёмся Front Controller, Controller и Router. Код, приведённый ниже может не запускаться, не является безопасным, но объясняет общие принципы работы большинства MVC-фреймворков.

      Читаем


    1. Понедельник, 25 января

      Использование Drupal через bootstrap

      Drupal позволяет поработать со своим API из внешнего скрипта. Ну или почти внешнего.

      Покажу на примере, как можно организовать импорт данных в Drupal.

      Читаем


    2. MVC: View

      Многие обожествляют MVC и думают, что если не использовать какой-нибудь фреймворк, View реализовать очень сложно. А уж тем более с поддержкой layout-а и возможностью использовать вложенные шаблоны. На самом деле это совсем не так.

      Читаем


    1. Суббота, 5 декабря 2009

      Фиксированная середина, плавающие колонки

      Вчера понадобилось получить довольно нестандартную трёхколоночную разметку: с фиксированной средней колонкой (например, шириной в 500px) и двумя боковыми, занимающими всё остальное пространство.

      http://rmcreative.ru/playground/fluid-fixed-fluid/target.png

      Оказалось, что решение довольно интересное.
      Читаем


    1. Пятница, 6 ноября 2009

      Фреймворки

      Довольно долго я пытался подобрать себе PHP-фреймворк. И, разочаровываясь в некоторых из кандидатов, задумывался о необходимости фреймворка как такового. Приведу некоторые очевидные, не очень очевидные и, надеюсь, полезные факты.
      Читаем


    1. Понедельник, 2 ноября 2009

      PHP, валидация и массивы

      Наверное, многие сталкивались с задачей ввода произвольного числа одноимённых полей через форму. В PHP это сделано довольно удобно: в форме к имени поля добавляется [] и на стороне сервера в $_POST, $_GET или $_REQUEST мы получаем уже массив.

      В любом коде необходимо проверять данные, пришедшие из форм и адресной строки. В любом хорошем коде они проверяются. Но вот про эту особенность с квадратными скобками очень часто забывают.

      http://example.com/list.php?q=test
      http://example.com/list.php?q[]=test



      Довольно безобидный код, в котором нет проверки:


      $q = null;
      if(!empty($_GET['q'])) {
      $q = $_GET['q'];
      }
      // тут начинаем работать с $q как со строкой



      А вот менее безобидный пример: в WordPress до версии 2.8.4 можно было таким вот образом сгенерировать новый пароль администратора без отсылки ему каких-либо писем.


    1. Четверг, 29 октября 2009

      Drupal: вывод данных с постраничной разбивкой

      Довольно типичная для Drupal задача, которая частенько ставит новичков в тупик.


      // Пишем SQL без LIMIT. Не думаем о постраничной разбивке вообще.
      $sql = "select title, type from {node}";

      // Заголовок таблицы
      $header = array(
      t('Заголовок'),
      t('Тип')
      );

      // pager_query добавит в SQL LIMIT без нашего непосредственного участия
      $result = pager_query($sql, 10);

      // собираем данные для таблицы из результата запроса
      $rows = array();
      while($row = db_fetch_object($result)){
      $rows[] = array(
      $row->title,
      $row->type
      );
      }

      // выводим таблицу
      echo theme('table', $header, $rows);
      // выводим постраничную навигацию
      echo theme('pager');


Подписаться на RSS

Интересное

Разделы

  1. (5)
  2. (11)
  3. (6)
  4. (9)
  5. (6)
  6. (6)
  7. (16)
  8. (60)
  9. (274)
  10. (52)
  11. (16)
  12. (12)
  13. (37)
  14. (6)
  15. (10)
  16. (14)
  17. (18)
  18. (16)
  19. (7)
  20. (8)
  21. (7)
  22. (7)
  23. (31)
  24. (76)
  25. (27)
  26. (68)
  27. (5)
  28. (203)
  29. (59)
  30. (6)
  31. (19)
  32. (73)
  33. (27)
  34. (70)
  35. (33)
  36. (10)
  37. (5)
  38. (6)
  39. (5)
  40. (341)
  41. (14)
  42. (11)
  43. (6)
  44. (13)
  45. (8)
  46. (18)
  47. (6)
  48. (15)
  49. (115)
  50. (18)
  51. (6)
  52. (9)
  53. (71)
  54. (16)
  55. (6)
  56. (25)
  57. (13)
  58. (5)
  59. (39)
  60. (7)
  61. (31)
  62. (7)
  63. (12)
  64. (11)
  65. (124)
  66. (34)
  67. (5)
  68. (18)
  69. (28)
  70. (9)
  71. (6)
  72. (8)
  73. (41)
  74. (10)
  75. (6)
  76. (12)
  77. (5)
  78. (9)
  79. (6)

Друзья