• Инструмент для рисования снежинок в браузере

      Снежинка своими руками. Хабрахабр
      Тема оформления «Хабрахабр».

      Ещё 2 дня назад я закончил разработку инструмента для рисования снежинок, отладил его в тепличных локальных условиях и готов был отправить в дальнее плавание. Но запуск «проекта» в открытый интернет пришлось 2 раза откладывать. Сначала при интеграции со сторонним сайтом отказались работать кроссдоменные AJAX-запросы методом POST (а GET'а мне не для всех запросов было достаточно), потом на медленном канале проявила себя в виде глюков асинхронная загрузка данных и представления. Сейчас всё вроде бы пофикшено, выложено и ожидает по отношению к себе проявлений внимания.

      О разработке, планах, предложения о сотрудничестве
    • Объём и перспектива в Inkscape

        В прошлом уроке (обсуждение на Хабре), на примере создания картинки со снеговиком, я рассказывал о рисовании объёмных изображений в Inkscape. Но тогда я раскрыл далеко не все приёмы, которыми хотелось бы поделиться. Без внимания остались и некоторые инструменты программы, имеющие прямое отношение к 3D.

        В этот раз мы будем рисовать аптечку.
        Аптечка. Нарисовано в Inkscape. Автор — Юрий Апостол.
        Статья опубликована на Linuxgraphics.ru. Читайте, пожалуйста, там.
      • Рисуем объёмные изображения в Inkscape

          Inkscape — относительно молодой, но прогрессивный векторный редактор общего плана (как Adobe Illustrator и Corel DRAW). Программа является кроссплатформенной, распространяется бесплатно и с исходным кодом. Основной формат изображений — SVG (масштабируемая векторная графика, стандарт W3C, рекомендованный для публикации векторных рисунков в интернете).

          О работе с программой, а заодно и о том, как наполнить объёмом векторное изображение, я хочу рассказать на примере создания своей картинки со снеговиком.

          Снеговик. Нарисовано в Inkscape. Автор — Юрий Апостол.

          Статья писалась специально для Linuxgraphics.ru. Читайте, пожалуйста там.

          UPD: По многочисленным просьбам публикую исходник. Лицензия — CC Attribution Non-commercial Share Alike. Благодарности можно отправить на кошелёк Z161444749304 или R173720801008. Половина уйдёт в фонд развития Inkscape.
        • Показать себя

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

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


            Ещё с самого юного возраста нам дают понять, что дорогие игрушки, бутерброды с чёрной икрой и золотые цепи на шее бывают только у детей богатых родителей. Но раз уж нам не повезло, — или повезло, ну и что с того, — придётся дорасти до права называться богатыми родителями самим. И тогда уже покупать дорогие игрушки за свои деньги.

            Нам предлагают три сценария на выбор и как перед Ильями Муровцами рисуют три дорожки с указателями — «Выиграть миллион в лотерею», «Украсть», «Заработать тяжким трудом». Из зала подсказывают, что нужно заработать.

            Читать дальше →
          • Восстановление базы MySQL из бинарных логов

              Базы данных иногда пропадают. Человеческий фактор и всё-такое… Если вы не делали бекапов (а надо бы) или они уже устарели, не отчаивайтесь, — есть ещё возможность восстановить утерянную информацию.

              Подробнее
            • Спам, порно, Народ.ру

                Ещё до Нового года на некоторые из моих почтовых ящиков начал приходить спам с заголовками вида «Orgiya na katere», «Glubokie rotiki», «Сексапильная сладкоежка отсасывает», «Горячая брюнеточка ищет приключений» и т.д. Хоть отправитель, тема, да и другие заголовки сообщений каждый раз разные, видно, что отсылает один и тот же бот. Тело сообщения содержит одно предложение такого же вида как тема и ссылку на *.narod.ru. Ссылка каждый раз новая. При переходе по ссылке происходит редирект на порнушный сайт. Сайт, вроде бы, один и тот же, а писем таких получаю уже по 20 штук в день. И, похоже, количество их растёт.

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

                Написал в службу поддержки Яндекса. Описал ситуацию, указал ссылки. Ничего не ответили, но ссылки заблокировали. Ссылки из новых писем прекрасно работают. Быть санитаром леса и каждый день отсылать порцию ссылок я не хочу. Пишу сюда в надежде, что всё-таки кого-то на Народе заставят поднять зад и убрать хотя бы возможность вставлять в код страницы подобные вещи:



                UPD: Всем спасибо. Понял, что с редиректами у Народа бороться не получится и ушёл настраивать фильтр на собственном почтовом сервере. even верно заметил, код для перенаправления можно легко сгененировать на лету с помощью JS. От себя добавлю, что java-скрипт может даже каждый раз выглядеть по разному, если его генерировать на другом сервере и потом уже подгружать на Народ. Отфильтровать такое будет невозможно.
              • Ростки на клавиатуре 2

                  Недавно рисовал логотип на тему «электронной» растительности. Загорелся желанием вырастить и пофоткать живую зелень, торчащую из ноутбука. В сети уже гуляли фотографии с ростками в клавиатуре. Там чувак засыпал семена между клавишами и обильно поливал, пока не взошел урожай. Но мне клавиатура ноута ещё нужна, поэтому разводить огород я решил в местах отдалённых от электроники, а ноутбук озеленить лишь на время съёмок.

                  Читать дальше →
                • Спам через хабрапочту и недоудаление писем

                    На хабрапочту недавно прислали письмо с просьбой поддержать какие-то возражения (или не возражения — не вчитывался, не интересно) по поводу призов на Хабре. Письмо завалил, прислали ещё одно такое же с призывом переслать дальше. Оба письма рассылались массово, в получателях были солидные списки пользователей. Второе тоже завалил. Но тут на первое письмо начали отвечать те, кто его получил. На мою личную почту приходят уведомления о каждом ответе. При переходе по ссылке «ответить» (или ведущую на само письмо в хабраящике) попадаю на 404, так как письма удалены. Сделайте что-то, пожалуйста. Получать спам ещё и с Хабра не имею желания.
                  • Сайт, созданный и запущенный за 3  дня, может приносить деньги. Небольшие :)

                      Сегодня пришло письмо с напоминанием о необходимости продления домена rada2007.com. Прошёл ровно год, пациент скорее мёртв, чем жив (спустя ещё год перенёс сюда). Вспомнил как создавался этот сайт, как пытался его раскрутить в короткие сроки, чтоб успеть до выборов, как хотел заработать на рекламе...
                      Пожалуй, поделюсь этими воспоминаниями
                    • «Удобная» регистрация

                        Помню, как был приятно удивлён очень удобным механизмом авторизации на одном активно обсуждаемом нынче ресурсе. Да, зарегистрироваться и автоматически войти на сайт, введя прямо на главной странице логин и адрес электронной почты — это чумовая фишка. Голова кружится от вебдванольности с первых секунд прибывания на сайте.



                        Никаких капч и подтверждений регистрации, просто заполняем два поля — и уже можем голосовать за топики, добавлять комментарии, отправлять сообщения по внутренней почте любому другому пользователю… Красота. Но хороша ли такая «быстрая регистрация» с точки зрения безопасности? Однозначно нет! Не делайте так,
                        а то будет вот так
                      • Работа на природе (или IT уходит в лес на велосипедах)

                          Долго присматривался к различным вариантам организации работы за пределами дома, но они мне не подходили по тем или иным причинам. Одним из вариантов был и коворкинг — замечательная модель, но, к сожалению, не совместимая с желанием не светить свои проекты до их запуска. Кроме того, коворкинг-центров у нас ещё очень мало, и ближайший, как правило, находится совсем не близко.

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

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

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

                          Читать дальше →
                        • Пакетная обработка изображений в GIMP

                            Время от времени возникает необходимость выложить в сеть фотоальбом или пакет отсканированных документов. В большинстве случаев изображения предварительно нужно уменьшить, а иногда и произвести дополнительную обработку, добавить надписи. И вот наступил момент, когда выполнять однотипные операции стало совсем лениво. Вспоминаем про замечательные средства автоматизации в замечательном и бесплатном редакторе GIMP.

                            Допустим, у нас есть куча фотографий разных размеров, с разным соотношением сторон и сохранённых в разных форматах. В общем, тяжёлый случай. Нам нужно весь этот зоопарк выровнять по размерам, учитывая пропорции, и сохранить в JPEG с заданным качеством. Да, и пусть нам иногда захочется задавать размеры не в пикселях, а процентах. Ну и пусть уже тогда захочется файлы выбирать по маске, типа «C:\images\img_01*.jpg».

                            Садимся, и калякаем на Script-Fu (доступный по умолчанию в GIMP, язык) свой
                            первый сценарий
                          • Хабрацентр им. %username%

                              Эх… Опять про тексты, написанные роботами. Developers! Developers, научитесь, наконец, делать пользователям ваших творений приятно.

                              Вот, например, «Семейно-строительный институт им. Ленин» — приятно? И Ленину не приятно… Да, склонять имена пользователей — дело не благодарное. Ну и не надо. Всегда можно сформулировать мысль таким образом, чтобы имя осталось в неизменной форме. Например, в заголовках персональных страниц пользователей Хабра можно писать «Apostol на Хабрахабре», «Apostol's хабрацентр» или «Хабрацентр „Apostol“» вместо «Хабрацентр им. Apostol».

                              Вместо «Последний раз был на сайте 2 мая 2008 05:25» гораздо лучше выглядит и читается «… был на сайте 2 мая 2008-го в 5:25».

                              Вместо кирпич башка попадёт «Вы искали водка, найдено 82 совпадения, соответствующих запросу, из них 2 пользователя, 20 хабратопиков, 60 комментариев» лучше вывести «По запросу „водка“ найдено 82 совпадения, из них 2 — в профилях пользователей, 20 в хабратопиках и 60 в комментариях».

                              Ситуацию надо менять. До начала изменения ситуации осталось секунд: −166860421. ;)
                            • Eval или include?

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

                                Когда пришлось реализовывать дерево комментариев, столкнулся с необходимостью рекурсивного вызова представления (view в MVC). Так как представления у меня, да и практически везде, — это обычные файлы с кусками HTML-кода и возможностью вставки PHP, то подключаются они с помощью include. Мне стало не по себе, когда представил как этот include вызывается рекурсивно сотни раз. Первая мысль — засунуть файл представления при первом запросе в память и потом выполнять его через eval. Такой подход позволит кешировать код представлений, и даже хранить его в БД. Так как eval кушает только PHP, а представления у нас чистым PHP-кодом не являются, то обрамляем содержимое в '?>' и '<?php'.

                                Тесты и выводы
                              • В IE6 разлазится textarea (в форме добавления комментария)


                                  (чем глубже в дереве комментариев, тем хуже)

                                  Описание проблемы и вариант решения был в посте, который слишком быстро попал в отхабренные. Но проблема есть, и она должна быть услышана. Простите за навязчивость. :)
                                • Лечим 100%-широкий textarea, попавший под padding в IE (на Хабре тоже)

                                    Столкнулся в очередной раз с проблемой, возникающей при попытке задать 100%-ю ширину элементу, расположенному в блоках, которые имеют ненулевые padding-и или margin-ы. В случае с textarea получается следующее: при первом отображении ширина устанавливается такая, как было задумано, ничего нигде не вылазит, но стоит только что-то набрать — поле расширяется за пределы блока, в который оно вставлено (только ИЕ).

                                    В этот раз искать обходные пути, не содержащие отступов и хаки (типа "// width: 90%"), не собирался, — дерево комментариев — не место для извращений. Перепробовал разные варианты, но моё поле ввода всё-равно частично пряталось под границами родительского элемента (либо вылазило поверх него).

                                    Вспомнил про Хабр, полез в код, а там форма засунута в . Хм, думаю, а чего у меня это не работало? Открываю Хабр в ИЕ6 — так и тут не работает:



                                    В результате проб и ошибок пришёл к такому решению:

                                    #comment_form .textarea { position: relative; height: 64px; margin-bottom: 8px; }
                                    #comment_form .textarea textarea { position: absolute; width: 100%; height: 64px; }

                                  • Коля — козёл

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

                                      Казалось, такого вкусного кофе он не пил ещё со студенческих времён. Это был незабываемый период в жизни будущего создателя успешных стартапов, автора нескольких бестселлеров и просто хорошего парня.

                                      Окончив школу и вырвавшись из родительского гнезда, он приобщился к огромной и дружной студенческой семье — невероятных размеров оффлайновой тематической социальной сети со своими порядками, сервисами и, самое главное, отличным сообществом. Конечно, любое сообщество не однородно. Здесь тоже объединялись по интересам, добавляли френдов, спорили на волнующие темы, одобряли или не одобряли поступки и мнения других участников. Но оценивать собеседника, и уж тем более писать анонимки на партах, что Коля козёл, считалось дурным тоном. В таких случаях просили Колю не быть козлом, и если не помогало — били в морду. Коля знал при этом, что по морде ему дал Петя. Дал за то, что Коля козёл. Всё было прозрачно и по-мужски.
                                    • Нравится отхабренная тема

                                        Не знал куда лучше опубликовать, в идеи или ошибки. Вопрос: почему нельзя отметить как «нравится» отхабренную тему? Вот конкретный пример. Поднять рейтинг этой теме хотелось бы не одному мне. Но уже поздно, люди просто не заметили её из-за того, что она быстро попала в отхабренные (-2 балла).
                                      • Влепить минус внутреннему голосу

                                          ИМХО, было бы неплохо, чтоб была возможность подсказывать внутреннему голосу, какие его посты нам не хотелось бы читать, а какие очень даже ничего. Может стоит добавить «голосовальные стрелочки»? Заодно и наличие «в избранное» не помешает, так как голос часто толкает интересные мысли.