Обновить
8
0
crazyprog @crazyprog

Пользователь

Отправить сообщение

Познаём Java. Вторая чашка: собираем классы в кучки. Пробуем апплеты

Время на прочтение5 мин
Количество просмотров80K

Чем обусловлена структура Java?


Как вы уже слышали, Java проектировалась с рассчётом на совместимость со всем, чем только можно. Такое ограничение вынудило разработчиков Java сделать её такой, чтобы максимально упростить развёртывание приложений, при этом обеспечив логическую стройность языка.

Как происходит загрузка классов?


Читать дальше →

Оптимизация процесса создания unit-тестов

Время на прочтение6 мин
Количество просмотров4.9K
Всем привет! Хабраюзер shai_xylyd написал статью про аспекты тестирования, где им были рассмотрены некоторые понятия и ценности TDD. В частности, он упомянул очень интересный способ создания первичных юнит-тестов — когда функциональный код пишется совместно с кодом юнит-теста, чем меня очень заинтриговал.

Дело в том, что я (как программист), нахожусь в состоянии переходного процесса между «классической» разработкой и разработкой test-driven, поэтому всякими способами ищу возможности упростить и сделать более естественной последнюю. После пары приседаний, сразу включиться в методику shai_xylyd не сумел. Начал переписку с автором статьи, где он натолкнул меня на мысль подойти к решению с математической точки зрения. Идея в том, чтобы воспользоваться функциональным пространством среды программирования и «разложить» написание юнит-теста на составляющие. После чего сделать выводы.
Немного математики, а потом пример

Fugue обновился! 1.2.5 от 19.01.09

Время на прочтение1 мин
Количество просмотров852

Fugue Icons 1.2.5



image
Да-да, теперь это не "1000 замечательных иконок для веб страниц" а целых 1,263 иконок. Многие иконки были перерисованы и много добавилось новых. Появились такие востребованные иконки как user или иконки элементов интерфейса: «button, checkbox, slider» и т.д. В общем обновление шикарное, хотя до сих пор нету таких иконок как cut, copy и paste. Иконки по прежнему распространяются по лицензии Creative Commons Attribution 3.0 license а для вопросов: «Зачем кнопка purchase?» читаем это.

Прямая ссылка — 4,9Мб
Набор разработчика 7,6Мб
Пред просмотр — 1980px × 2263px 1,4Мб
Сайт

P.S. Предыдущий пост был написан давно и я решил написать новый чтобы привлечь внимание этому сету, а не использовал UPD.

UPD: Фугия снова обновилась. Теперь версия 1.2.5, вот изменения:
  • Обновлена <application_table>
  • Обновлена <document_excel_table> и <document_table>
  • Добавлена <door_open>
  • Добавлена <feed_document>
  • Обновлена <folder_open_table>
  • Обновлена <inbox_table>
  • Обновлена <mail_open_table>
  • Добавлена <server*>
  • Обновлена <table*> and <tables*>
  • Добавлена <traffic_light*>

Следите за обновлениями топика

Познаём Java. Первая чашка

Время на прочтение3 мин
Количество просмотров22K

Что да как


Я решил поддержать начинание MaxElc и DarwinTenk, и начать потихоньку рассказывать про Java. Текст буду подавать «чашками» потому, что один из символов Java — чашка кофе. Большую часть я буду писать сам, изредка поглядывая в википедию и на официальный сайт языка — java.sun.com (раздел /docs).
Далее в тексте стоит разделять понятия «Java как язык» и «Java как платформа».
Читать дальше →

Формы для людей

Время на прочтение6 мин
Количество просмотров3.6K
Сейчас мы с вами поговорим о веб-формах. Я с высоты собственного невысокого полета успел накопить кое-какой опыт и жажду непременно им поделится. Все о чем пойдет речь ниже не является черепахой на которой стоят слоны. Речь пойдет о скотче на котором держится черепаха.

Итак…

Первое – Откуда ноги?


Уважаемый друг, для начала, я бы посоветовал отложить средства для рисования и верстки форм. Начнем мы с белого листа. И первым, чем лучше всего руководствоваться, это ряд вопросов самому себе, менеджеру проекта, разработчикам и прочим людям, которые принимают участие в данном эпическом созидательном действии.
  • Для кого делается форма?
  • Какая информация нужна, что бы понять и заполнить форму?
  • Каков результат заполнения формы?
  • Какие у нас есть возможности?

Подробности небольшого расследования

Общий обзор стандартных средств наблюдений за системой

Время на прочтение5 мин
Количество просмотров17K
Уровень сложности: начальный

Вводный обзор стандартных инструментов GNU/Linux должен помочь начинающим пользователям Linux контроллировать работу ОС. Используемые приложения, как правило, включены в поставку известных дистрибутивов. Полезным побочным эффектом я считаю возможность сориентировать молодых системных и сетевых администраторов в условиях [подозрения] компрометации.
Читать дальше →

Стыкуем компоненты в JavaScript

Время на прочтение5 мин
Количество просмотров2K
После заметки Стыкуем асинхронные скрипты и предложенного решения от Steve Souders я подумал о модульной загрузке какого-то сложного JavaScript-приложения. И понял, что предложенный подход в таком случае будет довольно громоздким: нам нужно будет в конец каждого модуля вставлять загрузчик следующих модулей. А если нам на разных страницах требуются различные наборы модулей и разная логика их загрузки? Тупик?

Ан нет. Не зря Steve упоминает в самом начала своей заметки о событии onload / onreadystatechange для скриптов. Используя их, мы можем однозначно привязать некоторый код к окончанию загрузки конкретного модуля. Дело за малым: нам нужно определить этот самый код каким-либо образом.

Решение первое: дерево загрузки



В качестве наиболее простого способа определить порядок загрузки модулей на конкретной странице можно предложить глобальный массив, содержащий в себе дерево зависимостей. Например, такой:
Читать дальше →

Производительность простых и сложных конструкций в JavaScript

Время на прочтение7 мин
Количество просмотров24K
Периодически натыкаясь на статьи, посвященные оптимизации кода на JS (вот одна из популярных) я ловил себя на мысли, что информации в них катастрофически мало. Перечислены 2-3 конструкции, 1-2 браузера и все на этом.

Как говорится, если хочешь сделать что-то хорошо, сделай это сам.
Я решил протестировать, в первую очередь для себя, скорость работы различных языковых конструкций (начиная с самых базовых) в основных современных браузерах и на основе этого сделать выводы о том, что и как использовать в скриптах, требовательных к производительности.

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

Upd: добавил графики результатов, предоставленные хабраюзером deerua (для тех, кто воспринимает визуальную подачу информации лучше чем табличную)
читаем дальше

Тонкости роутинга в Zend Framework

Время на прочтение2 мин
Количество просмотров3.4K
Задача — сделать профиль пользователя доступным через example.com/user/username и через пользовательский поддомен username.example.com. Задача простая и с помощью Zend Framework решается парой строк кода. Трудности начались тогда, когда я решил действия регистрации, подтверждения регистрации, востановления пароля и собственно входа/выхода поместить в тот же контроллер, который выводит профиль пользователя. Теперь возникла задача научить контроллер не воспринимать example.com/user/register как пользователя.
Читать дальше →

Установка и настройка Apache2+PHP5+MySQL+XDebug & Eclipse+PDT+XDebug в Ubuntu 7.10

Время на прочтение4 мин
Количество просмотров153K
В этом топике я расскажу как установить и настроить Apache2 + PHP5 + MySQL + virtual hosts + xdebug, а также XDebug в Eclipse+PDT.
Читать дальше →

Отправить POST через file_get_contents()

Время на прочтение3 мин
Количество просмотров87K
Чтобы получить содержимое веб-страницы все с удовольствием используют file_get_contents(), например file_get_contents('http://www.habrahabr.ru/'). Но я уже давно наблюдаю, что, как дело доходит до того, чтобы отправить POST, разработчики используют либо CURL, либо открывают сокеты. Я не считаю, что это плохо или что не надо так делать, просто для решения простых задач можно использовать простые решения.

Я и сам так раньше делал, пока на наткнулся на понятие контекстов потоковых операций в PHP. Контекст позволяет передать дополнительные параметры потоковому обработчику. Для http например, можно сконфигурировать POST-запрос или передать дополнительные заголовки.

file_get_contents() принимает 3 параметром «контекст», который собственно и конфигурирует сам запрос.
Ниже пример такого запроса или RTFM

Читать дальше →

Spring IoC Annotation-based configuration, часть 2

Время на прочтение4 мин
Количество просмотров44K
В предыдущей статье я рассказал об основных аннотациях Spring IoC, однако есть еще несколько интересных вещей, о которых хотелось бы поведать.
Для, тех, кто не в курсе, что такое Spring Framework предлагаю почитать вот эту статью.

Читать дальше →

Настройка домашнего сервера на базе Debian

Время на прочтение4 мин
Количество просмотров40K
Привет.

Хочу рассказать вам о том, как я реализовал дома серверное решение :)
Прошу строго не судить, т.к. это первая моя публикация на хабрахабр, и русский — не родной мне язык.
Так что все исправления приветствуются.

Речь пойдет о:
Старом компьютере на базе VIA Ezra с 256 мегабайт оперативной памяти, работающем на базе Debian Etch, выполняющем функции музыкального плеера, торрент-клиента, web+ftp+nfs сервера.

Дополнительное оборудование: 2 ноутбука (Dell, Asus) на базе Ubuntu, Fedora и Wi-Fi рутер/DSL-модем D-link DSL-2640u.

Интересно? Прошу под кат.

Работа с объектами в JavaScript: теория и практика

Время на прочтение15 мин
Количество просмотров221K
В этой статье я хочу по возможности полно и последовательно рассказать о том, что такое объект в JavaScript, каковы его возможности, какие взаимоотношения могут строиться между объектами и какие способы «родного» наследования из этого вытекают, как это все влияет на производительность и что вообще со всем этим делать :)

В статье НЕ будет ни слова про: эмуляцию традиционной класс-объектной парадигмы, синтаксический сахар, обертки и фреймворки.

Сложность материала будет нарастать от начала к концу статьи, так что для профи первые части могут показаться скучными и банальными, но дальше будет намного интереснее :)

если не боимся многабуков, то читаем дальше

jQuery Alert Dialogs — замена стандартным функциям Alert(), Confirm() и Prompt()

Время на прочтение2 мин
Количество просмотров39K
image
Плагин jQuery Alert Dialogs призван заменить основную функциональность стандартных предупреждений JavaScript, alert(), confirm(), и prompt() функций. Они полностью настраиваются с помощью CSS (это позволит выглядеть вашему сайту гораздо более привлекательно). И вы также можете настроить пользовательский заголовок для каждого диалогового окна.

Эти методы моделируют обычные модальные диалоговые окна. Они автоматически изменяют свое положение при изменении окна браузера. Если включить jQuery UI Draggable плагин, то окна можно перемещать, перетаскивая их за заголовки. В отличие от стандартных JavaScript функций, вы можете использовать HTML в сообщении. Например, чтобы задать переход на новую строку, вы можете использовать либо \n, либо < br / >.
Читать дальше →

Clear или overflow:hidden — очистка всего потока или создание контекста форматирования?

Время на прочтение2 мин
Количество просмотров35K
clear и overflowСвойство clear со значениями left, right, both действительно очищает поток в отличие от overflow со значеним hidden, которое создаёт отдельный контекст форматирования для выбранного элемента, тем самым локализуя действие свойства float внутри элемента к которому применён.

Читать дальше →

Сравнение PHP IDE

Время на прочтение1 мин
Количество просмотров69K
Вместе с Владимиром Стаценко сделали достаточно подробное сравнение популярных PHP IDE.
В сравнение вошли: Eclipse PDT, Zend Studio, NetBeans и Aptana.

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

HTML-версия таблички с фиксированным заголовком
PDF-версия

UPDATE
Расшарил исходник в Google Docs всем на чтение. Там более свежие данные, где учтены комментарии, а так же добавлена dev-версия NetBeans 7.

Знак рубля для самых популярных шрифтов

Время на прочтение1 мин
Количество просмотров154K
Несколько дней назад я столкнулся с проблемой: мне нужно было внедрить знак рубля на сайте, основным шрифтом на котором был Arial. Как выяснилось, решение, предлагаемое технологами студии Лебедева, требует создания уникального EOT-шрифта, который по определению содержит лицензионную информацию и работает только на ограниченном числе доменов. Поэтому невозможно было просто стырить шрифт с сайта, где знак рубля уже внедрён. Проблема заключалась в том, что два дня назад в интернете не было нормальных бесплатных TTF-шрифтов со знаком рубля, которые можно было бы переконвертировать в EOT. (ПараТайп сделал отличный бесплатный шрифт с засечками, но несусветнейшее жирное говно без оных, а мне нужен был Arial или что-то очень похожее).

Обо всём этом я честно написал Артемию Лебедеву и попросил его поделиться с широкой общественностью TTF-шрифтами, которые определённо имелись у студии: разные начертания знака рубля регулярно появлялись на её сайтах.

Вчера в своём живом журнале Артемий опубликовал запись, в которой дал ссылки на шрифт с 19 начертаниями знака рубля: Arial Regular, Arial Italic, Arial Bold, Arial Bold Italic, Georgia Regular, Georgia Italic, Georgia Bold, Georgia Bold Italic, Tahoma Regular, Tahoma Bold, Times Regular, Times Italic, Times Bold, Times Bold Italic, Lucida Regular, Verdana Regular, Verdana Italic, Verdana Bold, Verdana Bold Italic.

Браво! По-моему, это отличный новогодний подарок. Спасибо!

Забираем здесь: rouble.ttf, rouble.otf

Частые ошибки программирования на Bash (окончание)

Время на прочтение3 мин
Количество просмотров22K
Окончание перевода Bash Pitfalls. Предыдущие части доступны в блоге «Оболочки» (часть 1, часть 2) и в моём блоге.

22. echo "Hello World!"


Проблема в том, что в интерактивной оболочке Bash эта команда вызовет ошибку:
bash: !": event not found

Это происходит потому, что при установках по умолчанию Bash выполняет подстановку истории команд в стиле csh с использованием восклицательного знака. В скриптах такой проблемы нет, только в интерактивной оболочке.

Очевидное решение здесь не работает:
$ echo "hi\!"
hi\!

какое же тогда неочевидное решение?

Информация

В рейтинге
Не участвует
Откуда
Зеленоград, Москва и Московская обл., Россия
Зарегистрирован
Активность