1. Пятница, 13 августа

      HTML5 Boilerplate

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

      - Кроссбраузерный.
      - Совместим с IE6.
      - HTML5.
      - Правила для сжатия и кеширования.
      - Оптимизация под мобильные браузеры.
      - Стили для iOS, Android, Opera Mobile.
      - Куча других полезных техник.

      Рассматриваем и используем


    1. Четверг, 12 августа

      Странная рамка вокруг input[type=submit] в Opera

      Opera, в отличие от IE, не так часто «радует» странностями, но иногда, как и у остальных браузеров, случается.

      Тестовый наборчик (воспроизводится на последнем релизе, Windows)

      При фокусе на input[type=text] вокруг submit появляется чёрная однопиксельная рамка. Так как для кнопки использован border-radius, а рамка у нас прямоугольная, логично предположить, что это не border. Также проверил, что это не outline.

      Вадим Макеев подтвердил, что это такая фича, означающая, что форма в данный момент находится в фокусе, а кнопка с чёрной рамочкой её сабмитит. Работает это таким образом только на Windows. Ну и так как такое поведение желательно не всегда, в будущих версиях рамочка либо будет убрана совсем, либо будет документирована и её будет возможно убрать.

      Пока же единственный способ решить данную проблему — обернуть кнопку дополнительным элементом, задать самой кнопке border: none, а обёртке соответствующий border и border-radius.


    1. Среда, 11 августа

      PHP, шаблоны и короткий синтаксис

      Одним из самых частых аргументов, приводимых в пользу шаблонизаторов по сравнению с голым PHP, является более красивый синтаксис:


      {$code}



      вместо


      <?php echo $code?>



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

      Если включить в php.ini short_open_tag, можно вместо действительно громоздкого кода, приведённого выше, писать:


      <?=$code?>



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


      <ol>
      <?foreach($users as $user):?>
      <li>
      <h2><?=$user->username?></h2>
      <p><?=$user->notes?></p>
      </li>
      <?endforeach?>
      </ol>


    1. Пятница, 6 августа

      PhpStorm 1.0.2 RC build 95.480

      После небольшого затишья выложен свежий билд IDE PhpStorm, являющийся RC 1.0.2.

      - Исправлены почти все ложные срабатывания «Unused local variable».
      - Поправили ошибку с неработающим HTML5 при наличии пробелов в пути к установленной IDE.
      - Исправления в дополнении. См. Code | Code Completion | Cyclic Expand Word (Alt + /) и Cyclic Expand Word (Backward) (Alt + Shift + /).
      - Улучшено обнаружение ошибок в коде и их подсветка.

      - Официальный анонс
      - Полный список изменений
      - Обновляемся


    2. MongoDB 1.6

      Вышел стабильный релиз документоориентированной базы данных MongoDB. Допилили Sharding, Replica Sets, поддержку Windows.

      - Официальный анонс
      - Обсуждение на хабре


    1. Четверг, 5 августа

      Google Wave не пошёл

      Wave не оправдал надежд Google и больше развиваться как отдельный продукт не будет. Технологии Wave будут использоваться в других продуктах (тут, наверное, имеются ввиду технологии поглощённого EtherPad т.к. там всё работало получше, чем в Wave). Сайт будет поддерживаться до конца года.

      Источник


    2. CUrlManager::addRules

      Довольно часто на форумах спрашивали, как добавить свои правила роутинга не из конфига, а, например, из БД или XML, лежащего в модуле.

      Теперь это можно сделать при помощи CUrlManager::addRules. Вызывать его необходимо до CWebApplication::processRequest. Всё, что будет добавлено позже будет проигнорировано.

      Одним из способов это сделать является использование событий. В данном случае CWebApplication::onBeginRequest.

      Например, для подгрузки правил из модулей в main.php пишем:


      'onBeginRequest'=>function($event){
      $route=Yii::app()->getRequest()->getPathInfo();
      $module=substr($route,0,strpos($route,'/'));

      if(Yii::app()->hasModule($module))
      {
      $module=Yii::app()->getModule($module);
      if(isset($module->urlRules))
      {
      $urlManager=Yii::app()->getUrlManager();
      $urlManager->addRules($module->urlRules);
      }
      }
      return true;
      },



      Код уже ушёл в SVN.


    1. Вторник, 3 августа

      JAXL 2.0

      Вышла вторая версия JAXL — объектно-ориентированного XMPP-фреймворка для PHP, о котором я упоминал ранее.

      - В лучшую сторону изменилась архитектура.
      - Событийная модель.
      - Поддержка XEP:
      0004 – Data Forms
      0030 – Service Discovery
      0045 – Multi-User Chat
      0050 – Ad-Hoc Commands
      0085 – Chat State Notification
      0092 – Software Version
      0114 – Jabber Component Protocol
      0133 – Service Administration
      0249 – Direct MUC Invitation


      - Официальный анонс
      - Установка
      - Пример написания своего бота


    1. Воскресенье, 1 августа

      Разыменование массивов в trunk PHP

      Ещё одна приятная новость. В транк PHP 5.4 (который, возможно, будет в итоге выпущен как PHP 6) попала очень полезная возможность — разыменование массивов:


      function test() {
      return array("one" => "PHP", "two" => "trunk", "three" => "is very cool");
      }
      echo test()["two"]; // !!!



      То есть теперь можно обращаться к индексу массива, возвращаемого из метода.


    1. Четверг, 29 июля

      Yii, судьба yiic shell

      В Yii 1.1.2 было решено, что yiic shell, используемый для генерации кода из консоли, должен быть постепенно вытеснен GUI-генератором Gii. Решение было мотивировано тем, что поддерживать два генератора будет слишком накладно.

      С выходом 1.1.3 сообщество обратило на это внимание.

      Стоит сразу пояснить, что yiic сам по себе как поддержка консольных команд ни в коем случае не перестанет поддерживаться. yiic shell — только та часть, которая отвечает непосредственно за генерацию кода.

      По идее существует компромиссный вариант — использовать и для Gii и для yiic shell одни и те же шаблоны, что позволит свести затраты на их поддержку к минимуму. Проблема с ним в том, что в Gii в шаблон передаётся гораздо большее количество параметров.


  1. 1
  2. 2
  3. 3
  4. 4
  5. Последняя

Подписаться на 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)

Друзья