Как стать автором
Обновить
23
0
Константин Кудряшов @everzet

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

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

Безопасность. Модификация кода ядра платформы подгружаемыми апплетами

Время на прочтение4 мин
Количество просмотров698
Все что описано ниже касается только клиентской части реализованной на JavaScript. Приветствуется критика технического характера (например, пути обхода), но не критка в стиле «нафига это нужно».

При разработке модуля подключения апплетов к некой платформе (назовем ее Hyper) появилась задача обеспечения безопасности, так как подключаемый апплет кроме пассивного блока данных (content) содержит и активный (code). А в активном блоке невнимательный разработчик (злоумышленник) может обратиться к глобальному объекту window и получить доступ к переменным или важным методам ядра и сделать подмену, что в лучшем случае просто приведет к краху платформы (в пределах браузера конечно), а в худшем установка различных хуков не влияющих на работу системы, но перехватывающих персональные данные пользователя. В дальнейшем ничего не подозревающий пользователь будет пользоваться гаджетом «Часы от Боба», который по тихому собирает о нем информацию, или рассылает спам по адресам из контакт листа.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии53

Окна и буферы

Время на прочтение2 мин
Количество просмотров45K
В vim 7 появились табы — привычный способ навигации по файлам. Когда я работал в eclipse я не раз замечал, что часто скакать между табами не удобно, а знакомство с буферами в emacs натолкнуло на прочтение документации по окнам/буферам в vim.

Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии34

Время жизни сессии

Время на прочтение2 мин
Количество просмотров124K
Приветствую.
Столкнулся с проблемой убийства сессий раньше назначенного им срока. То есть устанавливаю

ini_set('session.gc_maxlifetime', 120960);
ini_set('session.cookie_lifetime', 120960);


А сессия убивается примерно через 30 минут.
Гуглил долго и тщательно. Не нагуглил ничего, что помогло бы.
Стал читать мануал и нашел причину проблемы. Оказалось всё просто до одурения.
Читать дальше →
Всего голосов 70: ↑60 и ↓10+50
Комментарии87

Vim для программиста

Время на прочтение2 мин
Количество просмотров15K
Любимый многими редактор Vim не является IDE. Однако в нём реализовано много замечательных возможностей, облегчающих работу с кодом.

Обычно цикл работы с кодом сводится к поправить код-скомпилировать-поправить код-скомпилировать-… В Vim есть средства, заточенные специально под этот процесс.
Выглядит это так:
Всего голосов 20: ↑16 и ↓4+12
Комментарии46

16 действительно полезных решений для JavaScript

Время на прочтение16 мин
Количество просмотров7.2K
© shamansir.wordpress.com

Представляю вам набор функций, которые у меня лежат в отдельном файле utils.js — это функции, которые я использую чаще всего. Они стараются быть кроссбраузерными и проверены на IE6/7, FF2 и Safari 2 и на боевой, сложной системе, в XHTML документах. Должны, по идее, работать, и на других, но не очень старых версиях браузеров — проверку браузера я использовал только в исключительных случаях. Некоторая часть из них, конечно же, просто нарыта на просторах интернета (где — обычно указано) и заимствована ввиду открытости, а большая часть — сконструирована из многих ресурсов и своих идей (и советов коллег), дабы работать на ура — поскольку часто в разных скриптах не учитываются разные тонкости, которые, тем не менее — при ближайшем рассмотрении — оказываются общностями :), ну и быть довольно читабельными.
Узнать
Всего голосов 89: ↑79 и ↓10+69
Комментарии73

баг с запретом символа процента перепрятан

Время на прочтение1 мин
Количество просмотров811
В ранних версиях был баг не пропускающий символ процента в адрес. для шифровки очень надо. но не работает. решение тут. Но это о старом, хотя не мешает почитать, чтобы вникнуть в суть.

Я пользуюсь версией 1.6.2. Возникла такая же проблема. Не пускает rawurlencode адрес. Нашел тот багрепорт. но нужной строки в файле не нашел. Теперь эта строка, а следовательно и решение проблемы лежит в
/* Location: ./system/libraries/URI.php */
на 189 строке решение такое же $str занести в функцию rawurlencode

было
189 if (! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str))

стало
189 if (! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", rawurlencode($str)))

UPD. взглянул на CI 1.6.3 — те же грабли.
Всего голосов 11: ↑8 и ↓3+5
Комментарии4

Symfony 1.1 Долгожданный релиз

Время на прочтение2 мин
Количество просмотров1.1K
Symfony Framework
Многие из нас ждали этого дня, держали руку на пульсе и даже участвовали в разработки этого замечательного фрэймворка. И вот настал этот день когда мы можем отпраздновать выход этого действительного революционного фрэймворка вобравшего в себя лучшие стили и практики программирования. Symfony 1.1 принёс много новшеств по сравнению с Symfony 1.0, вот часть того что нас ожидает:
Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии93

Подборка видео-проигрывателей на флэше

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


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

Надеюсь уважаемые комментаторы помогут дополнить список и выявить абсолютного лидера среди проигрывателей.
Уже помогли. Отдельные спасибы Elected, atri, rmb. Кармы всем за мой счет ^_^

Читать дальше
Всего голосов 84: ↑77 и ↓7+70
Комментарии101

Кодировки

Время на прочтение2 мин
Количество просмотров38K
Тут на самом деле всё просто. Храните все тексты в Unicode и будет вам счастье (при условии правильно установленной опции 'encoding' конечно ;) В ином случае (у вас куча текстов в национальных кодировках) придется
дочитать топик до конца
Всего голосов 28: ↑20 и ↓8+12
Комментарии17

Vim magic — Visual mode

Время на прочтение2 мин
Количество просмотров20K
Немножко о режиме выделения для тех, кому лень проходить vimtutor, или тех, кто ещё сомневается в том, что Vim это действительно удобно.

Режим выделения в Vim это одна из тех грандиозных вещей (наряду с *, = и text-objects), которые делают этот редактор особенно удобным. Как вы уже знаете, в Vim есть режим Visual, в котором можно выделять текст, чтобы потом с выделением что-нибудь делать, например, засунуть его в регистр, отформатировать, заменить в нем что-нибудь регулярным выражением или ещё что-нибудь. Чтобы войти в этот режим, нужно нажать v, а потом перемещать курсор обычными командами, передвигающими курсор в обычном режиме, расширяя таким образом область выделения.

Режимов выделения есть несколько: обычный, построчный и блочный. Обычный включается командой v и выделяет текст от символа до символа. Построчный включается командой V (Shift+v) и выделяет строки целиком. Блочный включается командой Ctrl+V (под Windows может включаться Ctrl+Q, если Ctrl+V занято под вставку текста из клипборда) выделяет вертикальный блок текста (не захватывает начала и концы строк в середине выделения, как это происходит в обычном режиме).

А теперь немного особой, Vimовской магии
Всего голосов 36: ↑28 и ↓8+20
Комментарии14

Настоящее оборудование для Vi/Vim

Время на прочтение1 мин
Количество просмотров2.1K
Обратите внимание, уважаемые фаны Vi/Vim, для какой периферии был первоначально изготовлен ваш любимый редактор. Это вам не хухры-мухры, а терминал ADM-3A, между прочим, со скоростью передачи данных от 75 бод, и стоивший
чудовищную сумму
Всего голосов 70: ↑58 и ↓12+46
Комментарии54

Symfony: как начать

Время на прочтение5 мин
Количество просмотров60K
Чем больше я работаю над своим первым проектом на работе, тем больше мне хочется в нем поменять и тем больше я жалею о том, что перед началом работы я не прочитал до конца «The Definitive Guide to Symfony» и не изучил плагины для Symfony. Многие из них мне бы помогли намного сократить время разработки и, что самое главное, не думать о том, как красиво реализовать те или иные вещи… И еще одно — если у вас уже есть кусок системы (как это было у меня), который вы собираетесь переписывать с использованием вашего фреймворка (или просто переписывать, потому что код вам не нравиться) — то мой вам совет — потратьте время на то, чтобы спроектировать этот кусок на план вашей новой системы, не бросайтесь сразу всё переписывать (каюсь, я поступил именно так), так как после анализа (который, возможно, займет у вас не один день, и даже не одну неделю), возможно, от предыдущей архитектуры системы не останется и следа.
Вообще, я люблю проектировать, продумывать, анализировать те или иные решения, которые хочу внедрить в систему (хотя, признаюсь, опыта у меня в этом маловато), но как обьяснить заказчику, что ты провел день в раздумьях… Эх…
Ну ладно, это я отвлекся. Сегодня хочется рассказать о том, с чего стоит начать при разработке системы с помощью Symfony и каких правил следует придерживаться.
Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии87

эффективное использование vim: «incredibly tips, part I»

Время на прочтение4 мин
Количество просмотров5.9K
Доброго всем времени суток
стараясь сдержать свое обещанию, хочу опубликовать след. статью об редакторе vim
В статье подразумеваться что читатель уже знаком с азами работы в vim'e, она будет посвящая более эффективному использованию накопленных знаний.

tips 1...
Всего голосов 53: ↑46 и ↓7+39
Комментарии72

эффективное использование vim: «from the very begining»

Время на прочтение7 мин
Количество просмотров27K
«Для меня vi это Дзен.
Использование vi — это практика дзена.
Каждая команда является коаном.
Полный смысла для пользователя,
Бессмысленный для непосвященного.
Вы познаете истину каждый раз когда вы его используете.»
--reddy@lion.austin.

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


эффективное использование vim
Всего голосов 92: ↑83 и ↓9+74
Комментарии114

Проектирование баз данных. Паттерн Компоновщик (Composite)

Время на прочтение4 мин
Количество просмотров17K
Web 2.0 победоносно шагает по виртуальному миру. Социальные сети растут как грибы после дождя. Теперь в одном месте вы можете хранить свои фото, видеозаписи, писать блоги и слушать музыку. Все это можно комментировать, класть в избранное, копировать… Возможностей много, контент социальных сетей разнородный и разнообразный, и в этом их преимущество.

А теперь представьте себе структуру БД какого нибудь «Вконтакте». Представили? И что вы видите? Множество таблиц с данными? А что еще? Множество таблиц для связей много-ко-многим! Необходимых, с точки зрения реляционной БД, но лишних с точки зрения логики. Но это еще не все. Среди полей таблиц мы видим огромное количество «лишних» полей, являющихся всего лишь внешними ключами, служащими для связей один-ко-много, так же необходимых с точки зрения реляционной теории, но абсолютно бесполезных с точки зрения логики.
Читать дальше →
Всего голосов 51: ↑47 и ↓4+43
Комментарии98

Визуализируя закон Фиттса

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

Введение


Готовясь к редизайну и пересмотру сайта wufoo.com, я посвятил некоторое время повторному изучению основ взаимодействия человека и компьютера, в надежде вобрать что-то новое, что накопилось за десятилетия исследований в области создания простых интерфейсов. Первое, что меня удивило на этом пути — это то, что материал по данной теме был крайне сжат и явно ориентировался на математиков, поскольку был написан на языке академической элиты. Можно предположить, что если бы они хотели произвести впечатление (особенно на дизайнеров), они могли бы написать документы, более лёгкие для восприятия.
Вспоминая школу, я отметил, что лишь во время изучения физики математика приобрела для меня некий смысл. Вместо абстрактных функций мне были нужны графики. Размышляя в таком ключе я подумал, что было бы неплохо дать наглядную интерпретацию закону Фиттса — краеугольному камню проектирования человеко-машинных интерфейсов, и объяснить как его концепцию, так и то, почему эти идеи чуть более сложны, чем многим бы того хотелось
Читать дальше →
Всего голосов 40: ↑39 и ↓1+38
Комментарии20

Ошибки реализации постраничной навигации на сайте

Время на прочтение2 мин
Количество просмотров1.5K
Кросс-пост: Блог для вебмастеров
Ошибки в построении постраничной навигации по сайтуСегодня наткнулась на один сайт (уже обновили), который показался мне очень неудобным тем, как реализована постраничная навигация.
Пролистав контент вниз я по привычке нажала на _цифру_, не подозревая что это не номер страницы, а число товаров отображаемых на странице! И удивилась, когда обнаружила, что номера страниц расположены _вертикально_, слева от контента.
Это на мой взгляд самый наглядный пример как НЕ надо делать постраничную навигацию.
Давайте разберемся…
почему данная реализация - плохая идея?
Всего голосов 35: ↑27 и ↓8+19
Комментарии34

Кэширование js сжатием gzip

Время на прочтение2 мин
Количество просмотров4.1K
Cache — временные данные или устройство по их хранению, созданные для ускорения чтения/записи. Все программисты это знают. Ускорение загрузки web-сайтов тема обширная, начинающаяся с сервера и заканчивающаяся клиентом. К сожалению я не нашёл более-менее подходящих решений по объединению и кэшированию js-кода, поэтому к своему блогу я написал свою схему, о которой вкратце и расскажу..
Существует сжатие «packer», которое убирает все символы форматирования и переименовывает имена функций и переменных в js и предоставляет т.н. minified-версию скрипта. Все с этим прекрасно знакомы на примере больших библиотек jQuery, TinyMCE, prototype. Кроме того что код становится совершенно не читаемым, это может вызвать неработоспособность кода, когда имена переменных динамические.
Моя идея простая — разделять js/css по файлам разработчикам надо для поддержания модульной структуры. Обычно я в контроллере создаю список файлов которые надо присоединить к данному документу, вместо того что-бы прописывать это вручную в темплейте. Но теперь надо сделать так, что-бы до показа темплейта вызывалась функция кэширования, которая проходилась бы по списку, проверяла из них локальные файлы на время изменения, объединяла в один файл и создавала или перезаписывала gz-файл с именем, сформированным из md5-хэша имён входящих файлов.
Всё просто и в сумме заняло часа 4 на раздумье. Привожу метод cache_js из класса Controller.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии29

Особенности условных конструкции со строками в PHP

Время на прочтение3 мин
Количество просмотров3.5K
На Хабре часто обсуждается какой язык лучше для написания безопасных приложений. При этом часто отмечается, что PHP спроектирован таким образом, что начинающий разработчик будет допускать ошибки, приводящие к дырам безопасности. В этом хабрапосте я хочу рассказать о, на мой взгляд, нелогичном поведении операций сравнения, операторов if и switch при работе со строками. Опытным разработчикам данные особенности известны, но решил все же собрать их в одном месте. Думаю пост будет полезен начинающим разработчикам и тем, кто работает в PHP, имея опыт программирования на других языках.

Что есть истина?

Какие строки истинны? Рассмотрим пример:
Читать дальше →
Всего голосов 45: ↑42 и ↓3+39
Комментарии88

Inkscape — открытый редактор векторной графики

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

До версии 0.45 Inkscape был достаточно посредственным векторным редактором, который умел создавать кривые и работать с ними и заливкой, имел в наличии некоторые примитивы, умел создавать патерны, умел делать «булевые» операции с кривыми, «клипинг», «маскинг», клонирование и т.д. Ну в общем и целом неплохой редактор, который имел необходимый минимум для работы.

После выхода версии 0.45 в нём появилось множество «вкусных» и полезных возможностей, некоторых из них очень нехватало. Думаю стоит перечислить некоторые из возможностей, как старых, так и новых(на момент выхода версии 0.46).
Читать дальше →
Всего голосов 66: ↑64 и ↓2+62
Комментарии53

Информация

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