вторник, 25 декабря 2012 г.

понедельник, 12 ноября 2012 г.

Save data

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

четверг, 1 ноября 2012 г.

Смотрю новый интерфейс яндекса

Смотрю видео:
Анна Котляревская: новый интерфейс Яндекс.Почты

Параллельно смотрю интерфейс yandex.ru.

Основной мой ответ в диалоге с почтой был "да я не спешу", потому что постоянно и надолго появлялась фраза: "пожалуйста подождите"...

Только я не понял, в видео говориться про трехпанельный дизайн (типа rambler.ru), а у себя в почтовике вижу абсолютную копию gmail.com, захотелось пойти дизайнером в Яндекс, чтоб тоже ничего не делать. Странно это все...

А вообще не плохо, получилось гораздо лучше чем у Рамблера.

пятница, 26 октября 2012 г.

MySql 5.6 c новыми фичами

Ну Oracle дает..., ждем MySql 5.6 c новыми фичами. Некоторые из них:



  • Full-Text Search with InnoDB: allows developers to build FULLTEXT indexes on InnoDB tables to represent text-based content and speed up application searches for words and phrases.
  • Simple, Key Value Lookup: flexible NoSQL access to InnoDB provides simple, key-value lookup of InnoDB data via the familiar Memcached API. Users get the “best of both worlds,” combining key-value operations and complex SQL queries in the same database.

воскресенье, 7 октября 2012 г.

Осторожность при получить headers

В php есть замечательная функция:
get_headers — Возвращает все заголовки из ответа сервера на HTTP-запрос.

Но к сожалению, она не всегда приносит правильные заголовки, особенно я заметил это когда пытался получить Content-Type, где ожидая получить 'image', получил text/html.
Как бы не хотелось избежать вызова CURL-а, но все же подстраховаться надо обязательно.

пятница, 5 октября 2012 г.

yEd Graph Editor

Нашел сегодня yEd Graph Editor - интересная такая программка для построения логических схем.
yEd is a powerful desktop application that can be used to quickly and effectively generate high-quality diagrams. Create diagrams manually, or import your external data for analysis. Our automatic layout algorithms arrange even large data sets with just the press of a button.
Добавил к своим инструментам. 

суббота, 29 сентября 2012 г.

А я поменял дизайн блога.

А я поменял дизайн блога. Что-то мне как-то грустно стало от старого темного...

PS:

  1. Комментарии(Add a comment) внизу под постом. Там же соц.кнопки. Там же и ярлыки(Labels).
  2. В левом верхнем углу можно менять стиль отображения блога - фишка blogger.com.
  3. Дата поста в левом верхнем углу поста. Год виден при наведении мышки.
  4. Панель пользователя и Рабочие инструменты теперь справа под всплывающем блоком.

среда, 26 сентября 2012 г.

PhpStorm VS NetBeans

Не пойму чего все так тащатся от PhpStorm. Попробовал его и получил только негативные результат.

Далее сравниваю в основном с NetBeans (PhpStorm 5.0.1 и NetBeans 7.2), т.к. пользуюсь им. Заранее скажу, что обзор не глубокий и делался примерно так: беру рабочий код и начинаю работать над ним дальше.


  • PhpDoc в PhpStorm  не отображает при подсветки кода.
  • Пробую вводить  self - а мне выводиться  No suggestions я в шоке..., parent - тоже самое... PhpStorm вообще знает что он с php должен работать?
  • Обработка путей - include ''; NB: тыкаю 'CTRL+Space' вижу список директорий и файлов и путь наверх - '../', в PS только список. Выбираю директорию. В NB выпадающее меню продолжает висеть и я могу выбирать дальше без тыканий 'CTRL+Space', в PS обязан каждый раз тыкнуть CTRL+Space, выйти на уровень выше с помощью меню по-прежнему не возможно...
  • Классы  PhpStorm находит хуже.
  • Макеты кода работают просто ужасно: к примеру, введите foreach и выведится вам слово foreach...,(надо ввести четко слово fore и тогда выведится макет, при чем, если удалить букву и вставить обратно макета не появиться...), напротив, в NB нарисуется код этой структуры, подставит переменные, причем не просто так, а ориентируясь на PhpDoc и содержание переменной.
  • В  PhpStorm набираю имя класса User:: - и тут мне вываливается абсолютно все методы и свойства класса... Иду в NetBeans набираю User:: - и вот оно блаженство, вижу только static методы и свойства!
  • В  PhpStorm ужасное отслеживание кода: в NetBeans такой код работает, в смысле нормально распознает, что в $a лежит класс и выведет все его нутро, а в PhpStorm нет.

        $model = new PeopleModel(null);
        $peoples = array();
        $newArray = array();
        foreach ($peoples as $people) {
            $newArray[] = $model;
        }
...
        foreach($newArray as $a){
            $a->
        }

т.е. $a->makeFullName($model, $separator);

  • PhpStorm хвалиться своей скоростью. Теперь становиться понятно, за счет чего взялась эта скорость...
  • Поддерживаемые фреймворки: PhpStorm: Symfony, Yii. NetBeans: Symfony, Zend, Smarty, Doctrine
  • В  NetBeans я прямо в коде могу управлять репозитарием(SVN, GIT) и видеть изменения по строкам. В PhpStorm девственный код...
  • И т. д... еще куча мелочей...


И это только за час легкого осмотра программы. При том JetBrains хочет за продукт 100 баксов. За такие деньги я предполагаю получить продукт хотя бы не хуже бесплатных аналогов. А получаю хуже.
А вообще уже не проблема скачать крекнутую 5.0.1...
Но в любом случае, нафиг надо. Всех этих недостатков уже хватает, чтоб забить на шторм на ближайший год точно, пока они там не почешутся.

PS. Если кто найдет жутко необходимую вещь в PhpStorm и не найдет в  NetBeans пишите плиз в коментах.

суббота, 8 сентября 2012 г.

Yii, extensions simpletree with FOREIGN KEY

Lang: php
Framework: Yii

Если в таблице использовать Вне́шний ключ (англ. foreign key), то данные не отображаются, или отображаются не все. Это происходит из-за того, что плагин не обрабатывает null в поле parent_id. А 0 мы поставить не можем из-за внешнего ключа.

Решение такое, заменяем строку:

> 207 foreach ($Model->findAllByAttributes(array($_REQUEST['modelPropertyParentId']=>$_REQUEST['id'])) AS $k => $Model)
На следующий код:
$criteria = new CDbCriteria();
$criteria->addCondition($_REQUEST['modelPropertyParentId']." = ".$_REQUEST['id']);
if (!$_REQUEST['id']) {
      $criteria->addCondition($_REQUEST['modelPropertyParentId']." IS NULL", 'OR');
}
foreach ($Model->findAll($criteria) AS $k => $Model) 

И можно смело дальше использовать плагин.

PS. Если кто найдет email автора плагина - JayRoe, скажите ему об этой недоработке.

суббота, 1 сентября 2012 г.

А мне нравятся нововведения в php 5.3, 5.4

А мне нравятся нововведения в php 5.3, 5.4

http://www.php.net/manual/en/migration53.new-features.php
http://www.php.net/manual/en/migration54.new-features.php

Хоть и развивается язык не так быстро как хотелось бы, но и это уже хорошо.

Документация не всегда точна, проверяйте коды и soft-ы

Ставлю php 5.4, читаю:

http://windows.php.net/download/#php-5.4
Which version do I choose?
If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP
If you are using PHP with IIS you should use the VC9 versions of PHP
VC6 Versions are compiled with the legacy Visual Studio 6 compiler
VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability. The VC9 versions require you to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++ Runtime (x64) installed
Do NOT use VC9 version with apache.org binaries
VC9 versions of Apache can be fetched at Apache Lounge. We use their binaries to build the Apache SAPIs.


Не знаю как у них, а у меня на apache 2.2 без проблем заработал php 5.4.6. Может сборка апача VC9 - точно не скажу.

php 5.4 больше внимания к коду

А php 5.4 как-то по жестче реагирует на код. Прежние вольно-писания, даже на php 5.2, уже не проходят.
Особенно доставила "радости" такая конструкция:
Declaration of Class::someFunction() should be compatible with ParentClass::someFunction();

воскресенье, 19 августа 2012 г.

У SVN версии > 1.7 структура поменялась. Приходиться все директории подвергать upgrade-у.

четверг, 9 августа 2012 г.

Комментарии в css

Увидел сегодня комментарии в css:

margin: 0; /* обнуляем внешние отступы */
padding: 0; /* обнуляем внутренние отступы */

Это же прекрасно. Тут далеко не каждый программист пишет комментарии, а тут так все красиво.

вторник, 19 июня 2012 г.

Недавно обнаружил в Dragonfly

Недавно обнаружил в Dragonfly приятные изменения в разделе Net(Сеть).
Наконец-то появилась возможность просматривать ajax запросы с POST(etc) значениями. Но и да, видеть ответы на запросы!


Правда осталось еще куча всего, чего надо делать, чтоб догонять остальные браузеры...
Но радует то, что идем в перед.

понедельник, 4 июня 2012 г.


Распознавание ReCAPTCHA с рекордной точностью 99,1%

В субботу 31 мая хакеры из группы DC949 выложили в открытый доступ программу Stiltwalker, которая способна проходить тесты Google ReCAPTCHA с результатом 99,1% (лучше, чем люди). В разработке используется несколько методов, при этом анализируется только звуковая часть ReCAPTCHA.


vk.com

Ошибка
 К сожалению, сервер временно недоступен. Попробуйте повторить действие чуть позже.
Интересно, это только мне так "везет"..?

воскресенье, 3 июня 2012 г.

четверг, 24 мая 2012 г.

Minification javascript from Google

Появился случай выложить сюда одну очень классную тулзу от Google:
http://closure-compiler.appspot.com/home
Которая делает
http://en.wikipedia.org/wiki/Minification_(programming)

Заодно добавляю в Рабочие инструменты справа ->

среда, 23 мая 2012 г.

Что-то я разочаровался в SOAP. Понятное дело, он сам в этом не виноват, просто так получилось. Но вот почему так?
Технологии связанные с определенным языком программирования создают какие-то разные WSDL-и с подключением каких-то новых функций, которые доступные только этим технологиям, не говоря уже о том, что и сами структуры WSDL строятся по разному...
Нафиг нужен этот цирк...



среда, 16 мая 2012 г.

Как красиво получить файлы с помощью сервлета

Как-то давно набрел на один замечательный класс FileServlet который отдает статистические файлы (static resources - имеется ввиду js, css ...) со все возможной корректностью. Да еще и поддерживает различные улучшения, к примеру GZIP compression.
Хотелось поделиться, да все забывал. Найти его можно по нижеследующей ссылке:
http://balusc.blogspot.com/2009/02/fileservlet-supporting-resume-and.html

вторник, 8 мая 2012 г.

Glassfish 3 encoding UTF-8

При работе с сервером Glassfish 3 за пределами USA с использованием языков, отличных от английского не забудьте !!!везде!!! где только можно кодировку utf-8
В файле glassfish-web.xml:
<parameter-encoding default-charset="UTF-8"/>
В файле glassfish-resources.xml:
jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
В файлах .jsp .html:
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
или
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

среда, 2 мая 2012 г.

Если NetBeans 7.1.2 не запускается

Если NetBeans 7.1.2 не запускается с ошибкой JVM creation failed, делаем следующее:


  1. Либо в netbeans.conf установить параметр MaxPermSize менее 256m

  2. Либо установить новый jdk-7u4-windows-x64.exe с официального сайта (после чего незабываем, в выше приведенном конфиге, поменять путь к новому jdk)

суббота, 28 апреля 2012 г.

понедельник, 19 марта 2012 г.

Люди придумали новую каптчу:


есть большой вопрос, где столько картинок набраться на весь инет...

фишинговый сайт

Сегодня получил симпотичное приглашение отдать злым дядькам свой email и пароль.



Ссылка ведет на так называемый фишинговый сайт. Будьте осторожны!

суббота, 18 февраля 2012 г.

Предположительная структура хранения графа друзей( и аналогичных соединений, к примеру с группами) для отображения действий пользователя на стене.

"friends", "apps"... - типы связей.
"10","394"... - id пользователей

array
['friends']['10']
['friends']['394']
['apps']['6']
['apps']['585']
...

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

четверг, 2 февраля 2012 г.

Link and Script tags

Когда объявляем стили или яваскрипты, названия лучше писать в самом начале тега. Чтоб при прочтении сразу было понятно, что за файл. Зачем нам читать всякие type и rel и т.д. если они для чтения кода человеком вообще нафиг не нужны.

<link href="css/style.css" type="text/css" rel="stylesheet"/>

пятница, 27 января 2012 г.

Memcached and tags

Сегодня произошла очень странная вещь.
Сижу, обдумываю проект, встраиваю memcashed в проект и думаю, как бы мне оптимизировать придыдущую версию этой реализации. Это все с учетом того, что я работаю с движком Yii.
В предыдущей версии я сохранял данные возвращенные из базы в моделях..., а сейчас думаю, а какого фига я тут корячусь.
Есть же возможность кешировать запросы средствами движка практически без моего участия. Сделал, работает, порадовался. Остается одна небольшая проблема, как сделать так, чтобы оперативно удалять устаревшие кеши при обновлении таблиц.
Сижу думаю.
А использую я ActiveRecord.
Надо поставить какие-то параметры, которые будут сообщать модели, что его таблица изменилась и нужно все перекешировать заного при запросе. Параметры эти запихнуть в тот же кеш. И осталось каким-то фигом при сохрании кеша эти параметры менять обратно. В общем система не эфективна...
Оказалось, что я не так уж и далек от решения, оказавшегося уже кем-то придуманым, кстати, чему не удивляюсь.
А нужно было всеголишь иметь не параметры для каждого запроса, а один, и определять изменения по нему не булевой операцией, а простым наращиванием! Просто как все гениальное.
А нашел я это тут http://www.opennet.ru/base/dev/memcached_tips.txt.html.
Теперь осталось придумать как запихнуть этот тег в кеш при записи в кеш и все будет пучком.
...
После полудня разбирательства в этой фигне, сообразил такую штуку. Фигачим класс:


class CTagCacheDependency extends CCacheDependency
{
public $tag;
        public $cache;
public function __construct($tag=null, $cache=null)
{
$this->tag=$tag;
$this->cache=($cache)?$cache:Yii::app()->cache;
}
       
protected function generateDependentData()
{
if($this->tag!==null)
                {
                        $t = $this->cache->get($this->tag);
                        if ($t === false) {
                                $t = time();
                                $this->cache->set($this->tag, $t);
                        }
                        return $t;
                }
}
}


L. 1

Используем его таким макаром в модели:

$this->cache(60, new CTagCacheDependency(get_class($this)));
L. 2

И не забываем после каждого изменения в базе (afterDelete, afterSave) делать это:

Yii::app()->cache->set(get_class($this), time(), 0);
L.3

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

Поясню немного.
L. 1 - это класс так называемой Зависимости кеша. В нем мы выбираем тег, если его нету, создаем новый и записываем его обратно в кеш.
В L. 2 мы устанавливаем эту зависимость для каждого кеша который будет выбираться и проверяться с данной зависимостью.
L. 3 - нужно для того, чтоб сказать нашей модели (через тег), что ее данные в таблице были обновлены.







среда, 25 января 2012 г.

Новая запись в таблице через Yii


PHP
Движок Yii 1.1.9
Работа с базой через CActiveRecord

Если захотите сохранить новую запись методом save(), воспользовавшись конструкцией Model::model(), ничего не получиться. Почему-то движек считает, что запись уже есть и $this->getIsNewRecord() возвращает false при использовании insert().
Интересно еще то, что save() вам вернет true и ошибок ни каких не выдаст, типа сохранил. А в таблице пусто.


Возвращаемся к старой доброй и надежной new Model().

суббота, 14 января 2012 г.

Как можно так писать!?

В один запрос возвращать данные с такими ключами:
[errorCode] => 0
[errorMessage] => ""

А на другой с такими:
[ErrorCode] => 0
[ErrorMessage] => ""

Где у таких людей мозги или там что у них в место них...?