Pull to refresh
0
0
Markus Tisse @Tisse

User

Send message

Версионность и история данных

Reading time5 min
Views130K
При разработке баз данных зачастую требуется обеспечить поддержку версионности и хранения истории объектов. Например, у работника может изменяться должность, у должности в свою очередь может меняться оклад — в многомерном моделировании это называется Slowly changing dimensions(далее SCD) — редко изменяющиеся измерения, то есть измерения, не ключевые атрибуты которых имеют тенденцию со временем изменяться. Всего существует 6 основных типов(методов) SCD, которые определяют как история изменений может быть отражена в модели.

Подробнее...
Total votes 64: ↑62 and ↓2+60
Comments50

Генерирование изображений-заглушек

Reading time3 min
Views57K
Сегодня мне кинули ссылку на прикольный сервис для быстрого генерирования изображений-заглушек. Может пригодиться для html-верстки. На мой взгляд, это удобно тем, кто и так использует заглушки — экономит время при вёрстке, т.к. сами заглушки уже готовы. Можно цвета/размеры подбирать, меняя только числа/буквы в коде, не отвлекаясь на сам файл картинки — и сразу видеть эффект. И сами размеры видеть написанными, если нужно, чтоб к коду не возвращаться для проверки. Или вместо размеров можно текст добавить, чтоб всегда знать, для чего эта заглушка (типа «Бан(н)ер» или там «Лого», или «Фотография»).

На сервисе не нужна регистрация — и вообще на сайт можно не заходить, чтобы его использовать. Пишете сразу у себя в коде, например:
<img src="http://placehold.it/350x50" />
и получаете:


Update. Благодаря усилиям k0rv1n, найден вариант этого сервиса, только лучше :)
Во-первых, там поддерживается кириллица. Во-вторых, там даны ссылки на исходники для разных языков.
Автор dummyimage.com — тот же Russell Heimlich, что и у placehold.it. У placehold.it есть ещё один автор, но будем считать, что он делал дизайн (дизайн там правда круче, но видимо как раз из-за понтового шрифта Unicode и не выходил).

Примеры (см. под хабракатом) я поменял с placehold.it на dummyimage.com, раз уж он функциональнее…
Ещё насколько примеров под катом
Total votes 287: ↑276 and ↓11+265
Comments119

CouchDB сегодня

Reading time8 min
Views27K


Что такое CouchDB для вас? Вероятно любой, кто хоть немного интересуется популярной нынче темой NoSQL, прекрасно знает общие детали: это такая симпатичная игрушка с map/reduce-запросами, которые пишутся на JavaScript, с которой можно работать, гоняя JSON по HTTP-протоколу, а также не исключено, что слышали, что она fault-tolerant, тобишь не ломается вообще. Дальше этого обычно дело не идёт, в результате CouchDB отправляется в delicious в общую кучу со всякими MongoDB, Cassandra, Hadoop и т.п.

Примерно такого мнения придерживался и я вплоть до недавнего времени, пока не возникла острая необходимость переосмыслить архитектуру текущего проекта (упёршегося лбом в свою реляционную БД) и пересесть на документную базу данных, которая бы умела map/reduce. После того, как более пристально взгялнул на CouchDB, я понял, что он уникален в своём классе, его не следует ставить в один ряд с упомянутыми продуктами. Идеи, которые заложены в CouchDB настолько концептуальны, что способны в корне перевернуть представление о разработке веб-приложений.

О том, что же меня так впечатлило, постараюсь рассказать под катом.
Читать дальше →
Total votes 147: ↑142 and ↓5+137
Comments110

Пишем себе немного OpenID-авторизации

Reading time10 min
Views9.6K
image

Взгляд в будущее


    В последнее время всякие социальные сети и вообще сервисы-лидеры интернета по посещаемости и количеству аккаунтов завели очень неплохую, на мой взгляд, привычку — предоставление уникальных OpenID-идентификаторов для пользователей, дабы с их использованием можно было зайти на сторонний сайт. Кроме того, параллельно развивается очень похожая, но все-таки не совсем производная технология OAuth, которая появилась на свет благодаря стараниям создателей небезызвестного Twitter и, цитируя википедию, «позволяет предоставить третьей стороне доступ к защищенным ресурсам пользователя, без необходимости передавать ей (третьей стороне) логин и пароль».
    Лично меня такая тенденция очень радует и, более того, я почти уверен, что за подобной технологией будущее. В частности, в будущем обязательно появятся новые мэшапы для агрегирования информации с кучи сайтов (в частности, хочется вспомнить очень хороший, но несправедливо забытый сервис Yahoo Pipes, который так и не смог покорить сердца и умы просто потому, что его время тогда еще не пришло. Возможно, все еще впереди), а именно такой «форм-фактор» требует логина на кучу сервисов сразу.
Читать дальше →
Total votes 67: ↑63 and ↓4+59
Comments18

Целебное зелье для IE5+ или IE7.js

Reading time2 min
Views7.1K
Разбирая код очередного проекта внутри тега head наткнулся на интересный код:

<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta3)/IE9.js"></script>
<![endif]-->

Только одно слово «IE9» меня пустило в замешательство. Первое что пришло мне в голову — это то, что при помощи этого .js кода браузеры под печальным клеймом Internet Explorer можно заставить работать используя свойства многообещающего IE9. Больше всего я ожидал что будут доступны свойства CSS3.0, но не тут-то было!
Читать дальше →
Total votes 159: ↑125 and ↓34+91
Comments73

Правило чтения по спирали

Reading time6 min
Views15K
Техника, известная как «Чтение по спирали/по часовой стрелке» (“Clockwise/Spiral Rule”) позволяет любому программисту разобрать любое объявление языка Си.

Следуйте этим простым шагам:
Читать дальше →
Total votes 145: ↑132 and ↓13+119
Comments42

Сборка Java приложений при помощи Apache Ant, quick start

Reading time12 min
Views52K

О чем эта статья


Одной из отличительных особенностей платформы Java является ее независимость от используемого инструментария. Вы можете разрабатывать сколь угодно большое Java приложение при помощи блокнота (vi) и командной строки. Понятно что так никто не делает и все используют какую-то IDE. Как следствие независимости от инструментов — IDE для Java много. Все это хорошо но есть одна особенность. Если Ваш коллега делал приложение и для сборки проекта использовал IDE_A то в IDE_B которая стоит у Вас — собрать приложение не получится.
В общем-то это давно уже не проблема. Хорошей практикой считается использовать систему сборки не зависящую от IDE. Для Java их две это Apache-Ant и Maven (тоже в общем-то Apache). Но тут есть один подводный камень. Если в Delphi или Visual Studio, чтобы создать и собрать приложение надо кликнуть в кнопку new пройтись по шагам визарда и нажать кнопку собрать, то написание ant скрипта для сборки например web приложения, особенно для начинающего разработчика, задача не тривиальная.
В статье рассматривается сборка и деплой Java web приложения шаг за шагом.

В целом задачу можно решить как с помощью ant так и с помощью maven, здесь будет рассмотрен ant. Для начинающих он проще и нагляднее.

Примечание 10 лет спустя

Решил посмотрел на свою статью написанную 10 лет назад. Звучит старомодно, в 2021 я в общем случае не рекомендую собирать Java приложения при помощи ant. НО если уж у вас возникла такая необходимость, то статья все еще может помочь. Пусть живет.

Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments35

Притча о шаблонах

Reading time8 min
Views1.9K
 — Здравствуй *с широко развевающейся по лицу улыбкой* дружок.
 — Ваа! *с ярким блеском в широко распахнутых глазах* Тётя Ася приехала!
 — Да, и у меня есть для тебя новая сказка *присела и взяла малыша за руки* хочешь послушать?
 — Конечно! *слегка смутился и отвёл взгляд* Мне тут дядя такие страшные истории рассказывал…
 — Ну, надеюсь моя история тебя не испугает *потрепала его по волосам* Она должна научить тебя мыслить шаблонно.
 — Эээ? *лицо перекосилось от недопонимания* Это как?
 — М… сейчас узнаешь *подмигнула и взяла на ручки* Вот когда тебе нужно вставить переменные в строку — ты как поступишь?
 — Ну… *взял карандаш и чирканул на лежащей рядом бумажке* примерно так:
var query= 'xxx'
var resultCount= 512
var message= 'По запросу <kbd>' + query + '</kbd> найдено страниц: ' + resultCount

 — Ты ничего не забыл? *победоносно подняла голову*
 — Да вроде нет… *уткнулся носом в код, ещё раз внимательно его проверяя*
 — Что, если пользователь введёт… *выдержала многозначительную паузу и добавила*
какого же порева она там добавила?
Total votes 232: ↑157 and ↓75+82
Comments164

Плагин для быстрой смены кодировки открытого файла в Gedit

Reading time2 min
Views23K
В Gedit есть возможность выбирать кодировку файла при его открытии. И при открытии файлов вкодировке отличной от системной в Gedit, возникают проблемы кракозябры. Вроде бы есть и автоопределение кодировки, но оно у меня ни разу не работало :-(.
Читать дальше →
Total votes 43: ↑42 and ↓1+41
Comments38

Король умер — да здравствует король! ExtJS с сегодня уже Sencha

Reading time1 min
Views2.6K
image

Официальный сайт ExtJS говорит:
"Чудесные чудеса творятся! Сегодня мы объединяем свои усилия с проектами jQTouch и Raphaël и меняем имя нашей компании на Sencha. А так же переезжаем с адреса www.extjs.com на www.sencha.com."


Такие вот пироги! Сайт и твиттер уже живут по новым адресам.

Пару слов о том, что такое JQtouch: это jQuery плагин для разработки под мобильные девайсы типа АйФона, АйПода и прочие «forward-thinking» девайсы.

Что же такое Raphaël? А это крутая штука для разработки векторной графики под веб (см. демки по ссылке).

Ууух, ядреный коктейльчик должен получиться! :)
Total votes 83: ↑73 and ↓10+63
Comments57

Генератор миниатюрок из Nginx-а

Reading time3 min
Views27K
Итак, сегодня мы соберём генератор миниатюрок на базе любимого народом веб-сервера — nginx-а. Что примечательно, сделаем мы это без единого гвоздя, т.е. без единой строчки кода, не считая конфигурации.
Что ж приступим...
Total votes 81: ↑76 and ↓5+71
Comments42

Html и Skype используем в своих приложениях

Reading time2 min
Views71K
Skype уже наступает повсеместно. Особенно в череде последних событий с групповыми видеозвонками. Даже в нашем захудалом городке, у половины пользователей локальной сети стоит Skype. Почему бы не использовать его как дополнительную возможность для общения с клиентами? Он с легкостью обгонит и перегонит пользу от тех же ICQ или Jabber. Ну а про стоимость звонков, я вообще молчу, опсосы на своих роумингах иногда за минуту разговора снимали баснословные деньги. Так дайте же юзерам общаться через Skype, повысьте свой сервис.


Читать дальше →
Total votes 116: ↑84 and ↓32+52
Comments35

Стратегический план на год

Reading time2 min
Views18K
Этим постом мне хочется собрать воедино всю информацию, которая накопилась у меня на тему эффективного планирования на год + как с этим работать в тактическом плане. Вдохновением послужили книжки Глеба Архангельского и Дэвида Аллена. И в одной и во второй есть материалы посвещенные долгосрочному планированию, но у меня получилась немного своя схема, и по итогу для меня она более рабочая.

image

Структурно хотелось бы рассмотреть все таким образом:

1. Функционал
2. Стратегия + тактика
3. Области применения
4. Примеры
5. Дополнительные материалы

Читать дальше →
Total votes 49: ↑36 and ↓13+23
Comments27

Пользовательские типы в Hibernate

Reading time4 min
Views11K
Hibernate — это прекрасный ORM инструмент, который можно настроить практически под любые свои нужны. В этом топике я покажу, как можно хранить поля произвольного типа. Для примера, возьмем массив строк (String[]) и POJO объект, который мы хотим хранить в БД:
  1. public class StringArrayContainer {
  2.     private Integer id;
  3.     private String[] tags;
  4. //  Место для геттеров и сеттеров.    
  5. }

Для того, чтобы хибернейт мог сохранять в базу поле типа «массив строк» необходимо (и достаточно) написать класс, который реализует интерфейс UserType, а также сослаться на него в мэппинге (файл hbm.xml).
  1. public class StringArrayCustomType implements UserType {
  2. //  TODO: написать реализацию.  
  3. }

Читать дальше
Total votes 39: ↑34 and ↓5+29
Comments8

Сниффер витой пары из Wi-Fi роутера

Reading time2 min
Views89K
image

Трафик проходящий по витой паре может быть прослушан абсолютно незаметно для участников соединения.
В этом посте будет показано как изготовить автономный сниффер с возможностью сохранения дампа на диск и управляемый по Wi-Fi.

Читать дальше →
Total votes 188: ↑172 and ↓16+156
Comments122

100 долларов в час

Reading time5 min
Views8.6K

Ранее я упомянул свою ставку 100 долларов в час. Я получил десятки комментариев с общим смыслом “получать так много нескромно”. И никто не сказал “работать так мало нескромно”. Почему-то считается, что работать надо хотя бы 40 часов в неделю. Общество настроило нас:

  • работать надо много
  • жизнь должна быть трудной
  • времени должно не хватать.

“Welcome to real life. It sucks, but you’ll get used to it”, – говорят в сериале Friends.


Сколько стоит мое время?

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

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


Оно того не стоит

Стоит выяснить цену своего времени, как можно забить на убыточные дела. На прошлой неделе я ходил в театр Станиславского на “Севильского цирюльника” и забыл бутылку вина в камере хранения. Вино стоило 287 рублей, до театра идти 15 минут туда и 15 минут обратно. Получается, что при часовой ставке до 574 рубля дело выгодное, иначе выгоднее не забирать.

Пример расточительства
Удивительно, но даже крупные банки, обладающие штатом квалифицированных экономистов, не всегда прибегают к такому анализу. Мой друг получил звонок из Citibank с просьбой погасить задолженность в размере… 90 копеек. По самым скромным оценкам, только минута работы оператора на телефоне стоит полтора рубля. Прибавьте расходы на офис коллцентра, оборудование, страховку, налоги. Прибавьте работу офиса, куда друг приехал гасить задолженность, операционистов, в конце концов стоимость бумаги!

Вот примеры того, где можно сэкономить:


Читать дальше →
Total votes 387: ↑254 and ↓133+121
Comments356

Настраиваем Tomcat для работы с JSF2 и другими компонентами Java EE 6

Reading time7 min
Views20K
Данная статья описывает по шагам как настроить Tomcat (на текущий момент версия 6.0.26) на работу с разными компонентами Java EE 6.Вы можете пропустить чтение этой статьи и сразу получить настроенный Tomcat и пример приложения.
подробности
Total votes 30: ↑27 and ↓3+24
Comments11

Когда картинка красноречивее 1024 слов – прототипирование с MockingBird

Reading time2 min
Views7.3K
image Для написания ТЗ я задался вопросом поиска простого и удобного средства создания прототипов веб-страниц. Хотелось чего-то бесплатного и в онлайне, некой альтернативы Axure. Такой сервис удалось найти, его я и предлагаю вашему вниманию. Итак, встречайте www.gomockingbird.com – сервис, позволяющий создавать очень красивые прототипы легко и удобно.
Помимо представления самого сервиса, этим постом хотелось также привлечь внимание общественности к полезной практике прототипирования.
Читать дальше →
Total votes 137: ↑129 and ↓8+121
Comments54

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity