Обновить
33
0.7
ionicman@ionicman

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

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

Запускаем Skype без надоедливой Главной страницы

Время на прочтение2 мин
Охват и читатели20K
Поводом к написанию заметки послужил недавний вопрос. Меня тоже очень раздражает окно Skype Home, появляющееся при каждом запуске, однако с помощью простой программы на C мне удалось от него избавиться. Получилось нечто вроде Hello World Tutorial по использованию Windows API. Программу можно скачать тут, а исходник с описанием найдете под катом.
Читать дальше →

Iterator, ArrayAccess, Countable: Объект как массив

Время на прочтение5 мин
Охват и читатели32K

0. Intro.


В стандартной поставке php имеются 2 интересных интерфейса, позволяющие значительно изменять поведение объектов в языке.
Это Iterator и ArrayAccess. Первый позволяет итерировать объект через такие конструкции each, foreach, for. Второй же, в свою очередь, позволяет обращаться к объекту, как к массиву применяя привычное $array[] = 'newItem'. Соответственно, для полноценной эмуляции массива, объект обязан заимплементить оба интерфейса.
Читать дальше →

Опыт взаимодействия и восприятие цвета пользователем

Время на прочтение8 мин
Охват и читатели28K


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

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

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

Для того чтобы исследовать данный вопрос я создал очень быстрый и простой тест. Вы можете перейти сюда (прим. на английском) для того, чтобы пройти этот тест и составить своё собственное мнение по данному вопросу.

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

Узнать больше и просмотреть результаты тестов

Декодирование GIF

Время на прочтение4 мин
Охват и читатели19K
В прошлый раз мы разобрались как устроен JPEG (Декодирование JPEG для чайников). Вполне логично, что следующим форматом стал GIF. Кстати, он гораздо проще. Его, в отличии от JPEG, можно декодировать имея только ручку с бумажкой. Сначала, продолжая традицию, я захотел закодировать в GIF favicon Гугла, но потом решил, что лучше расписать процесс декодирования всего файла на маленьком изображении. Без всяких «а дальше по аналогии...». Пришлось долго экспериментировать, и картинка получилась неказистой, зато вполне наглядной для изучения.

Итак, мы будем ковырять вот эту картинку . Видите? :) Тогда она же, увеличенная в 10 раз:


Внутренности в hex-редакторе:

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

Что дает обычному человеку Федеральный Закон №152 О персональных данных?

Время на прочтение5 мин
Охват и читатели123K
Об операторах персональных данных написано довольно много статей.
Операторы очень расстроены, что им приходится тратить средства на защиту персональной информации, что им всем тяжело живется и вообще все очень плохо.
С другой стороны есть сами владельцы персональных данных, и я предлагаю рассмотреть тему именно с этой стороны. Что же дает владельцу персональных данных ФЗ № 152 и каким способом он может защитить свои законные интересы?
В данном случае разговор пойдет о коммерческих организациях, вопрос относительно государственных органов – тема отдельной статьи.

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

Конспекты для ленивых

Время на прочтение2 мин
Охват и читатели244K
Все началось с того, что возникла необходимость переписать огромное колличество конспектов за довольно небольшой срок. Время поджимает, лени не уменьшается, а делать надо. Благо конспекты были в электронном варианте, решилась я на хитрость — создать свой рукописный шрифт и распечатать конспекты.
Читать дальше →

Создаём шрифт, имитирующий ваш рукописный почерк

Время на прочтение3 мин
Охват и читатели1.1M
Учащимся старших классов и студентам ВУЗов, зачастую, делая домашнюю работу, приходится выполнять большое количество письменных упражнений. Например, наш преподаватель по обществознанию каждый урок задает нам ДЗ, заключающееся в том, чтобы мы нашли материал в библиотеке или Интернете, и написали его от руки (только за это можно получить оценку «отлично»), даже если найденный материал будет верным, но распечатанный на компьютере, выше четвёрки не жди…

Исходя из всего вышесказанного, я пришёл к выводу: нужно сделать шрифт для компьютера, дублирующий мой почерк. На мой взгляд, сделал я его успешно. Родная мать не отличит, где я писал от руки, а где напечатал компьютер. Многим моим знакомым понравилась эта затея, и они стали расспрашивать меня, как я это всё сделал. И чтобы каждому по сто раз не объяснять, я решил написать эту статью – план выполнения работы с подробными комментариями.

Итак, в этой статье я расскажу вам, как сделать шрифт, имитирующий ваш почерк.
Читать дальше →

Защита и взлом БД на примере программы «Каталог запчастей»

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

Итак. Есть программа с папкой DATA, данные из которой очень хочется получить.

Есть несколько вариантов.
  • Превый вариант. Можно пойти сложным путем, снимая скриншоты и экспортируя заявки по одной в excel. Но это долгий способ и неинтересный.
  • Второй вариант. Подумать и раскодировать данные.

Для начала нужно узнать в каком формате хранятся данные в программе. Можно воспользоваться бесплатной программой TrID.
Читать дальше →

Siege — утилита для нагрузочного тестирования веб-серверов

Время на прочтение7 мин
Охват и читатели86K
Надеюсь, что данный материал будет кому-нибудь полезен.

Siege – это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы «под осадой» долгое время. Количество запросов, произведённых при «осаде», рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы.

UPD: спасибо за плюсы, перенес в тематический блог.
Читать дальше →

Практика прохождения собеседований или как я переехал в столицу

Время на прочтение4 мин
Охват и читатели20K
Привет, %хаброюзер%!

Сегодня я поделюсь с вами своим опытом прохождения собеседований на вакансии PHP-программиста в «белокаменной»Москве.
Читать дальше →

Теория радиационного мониторинга

Время на прочтение4 мин
Охват и читатели13K
Этот топик фактически является ответом на топик Непрерывный мониторинг радиационного фона в Москве. Надеюсь он поможет желающим организовать собственный мониторинг.
Читать дальше →

Вирусный анализ на примере — исследуем Trojan-Downloader.Win32.Zanoza.ab

Время на прочтение5 мин
Охват и читатели26K
Вы когда-нибудь задумывались о том, какова судьба вируса, пойманного антивирусными компаниями? О том, что происходит с ним ещё до добавления сигнатур в базу? А конкретнее, о вирусном анализе. Может показаться, что самому заниматься вирусным анализом сложно, ненужно и опасно, но на самом деле это совершенно не так. Лишние умения никогда не повредят, да и полезно, иногда, посмотреть перед запуском, что из себя представляет скачанный с интернета исполняемый файл. Для начала работы сгодятся любые знания ассемблера, отладчик с дизассемблером и виртуальная машина на выбор.

Образцы вирусов для анализа можно, конечно, поискать самостоятельно в интернете, но мы с Вами для начала пойдём другим путём. Огромную коллекцию уже готовых для анализа вирусов можно взять на сайте vx.netlux.org. Первым приглянувшимся мне вирусом стал Trojan-Downloader.Win32.Zanoza.ab. Его подробнейшим анализом мы сейчас и займёмся. Кстати, неплохие описания вирусов можно посмотреть на сайте securelist.com.

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

Геометрические фигуры на CSS

Время на прочтение4 мин
Охват и читатели994K
Отличная подборка, как нарисовать различные геометрические фигуры одним элементом HTML.

Квадрат



#square {
	width: 100px;
	height: 100px;
	background: red;
}

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

Как разместить картинку внутри QR-кода

Время на прочтение2 мин
Охват и читатели144K
Автор блога Hack A Day Брайан Бенчофф (Brian Benchoff) разобрался в алгоритме генерации QR-кодов (стандарт ISO 18004) и составил инструкцию, как можно внедрить в QR-код произвольное изображение. Например, логотип фирмы.

Для работы использовались генератор QR-кодов и Microsoft Paint для попиксельного редактирования.

Шестая версия QR-кодов представляет собой квадрат со стороной 41 пиксел.



На картинке показан шаблон QR. На нём чёрные пикселы всегда обязаны быть чёрными, а белые обязаны быть белыми. Серая зона свободна для творчества.
Читать дальше →

Изображения без width/height

Время на прочтение1 мин
Охват и читатели8.7K
Хорошим тоном считается всегда указывать для изображений, которые мы используем на странице, их длину и ширину. Часто такие картинки, если мы не укажем их размеры, могут во время загрузки раскачивать нашу верстку.
Чтобы во время разработки было более наглядно, где мы пропустили картинки без указания размеров, ребята из 37Signals предложили небольшой, но чрезвычайно полезный сниппет:

img:not([width]):not([height]) {
  border: 2px solid red !important;
}

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

Оригинал статьи

Пишем PHP extension

Время на прочтение8 мин
Охват и читатели34K
А давайте сегодня взглянем на PHP немного с другой точки зрения, и напишем к нему расширение. Так как на эту тему уже были публикации на Хабре (здесь и здесь), то не будем углубляться в причины того, для чего это может оказаться полезным и для чего может быть использовано на практике. Эта статья расскажет, как собирать простые расширения под Windows с использованием Visual C++ и под Debian с использованием GCC. Также я постараюсь немного осветить работу с PHP-массивами внутри расширений и провести сравнение производительности алгоритма, написанного на native PHP и использующего код, написанный на C.

Писать будем расширение под PHP версии 5.3.

Нечёткий поиск на клиенте и Soundex

Время на прочтение7 мин
Охват и читатели9.4K
Soundex — один из алгоритмов сравнения двух строк по их звучанию. Был разработан чуть менее 100 лет назад Робертом Расселом и Маргарет Оделл. Активно используется в США при диктовке фамилий.

Я давно интересовался применением этого алгоритма и нашёл ему место для фильтрации данных на клиенте, а точнее, для поиска отеля по названию в проекте Островок.ru.

Задача

На Островке все найденные отели передаются на клиент и вся фильтрация и сортировка выдачи происходит в браузере. Необходимо было добавить фильтр по названию отеля.

Решение, проблемы и готовый скрипт

HTML5 Drag and Drop загрузка файлов

Время на прочтение4 мин
Охват и читатели138K
image
Благодаря нововведениям HTML5 создавать Drag and Drop интерфейсы стало гораздо проще. К сожалению, эти нововведения еще не обладают обширной поддержкой браузеров, но надеюсь в скором времени это изменится (на данный момент работает в Firefox 4+, Chrome и Opera 11.10).

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

Ликбез по уязвимостям в веб-приложениях, а также самые частые ошибки разработчиков

Время на прочтение7 мин
Охват и читатели42K


Эта статья — продолжение цикла статей по информационной безопасности в веб-приложениях (и не только).

Вообще думал написать о «белом ящике», но я решил что нужно сначала ликвидировать возможные пробелы у целевой аудитории (в основном веб-разработчики) в этой области.

Может многие и все знают, о чем я пишу в статье, но я попытаюсь разбавлять ее практическими примерами и занятным опытом.

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

Как обычно — ответственность за все полученные знания только на читателе :)

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

Замыкания и объекты JavaScript. Переизобретаем интерпретатор

Время на прочтение12 мин
Охват и читатели25K
Обычно концепции или парадигмы программирования объясняют либо описательно — «разжёвывая» новые идеи простыми словами, либо метафорически — уподобляя их хорошо знакомым аудитории предметам и понятиям. Но ни первый, ни второй способ не дает такого точного и полного представления о предмете, как взгляд с точки зрения низкоуровневой реализации.

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

JavaScript, как никакой другой язык, нуждается в именно таком объяснении. Функциональная природа, скрытая за Си-подобным синтаксисом, и непривычная прототипная модель наследования поначалу сильно сбивают с толку. Давайте мысленно понизим уровень JavaScript до простого процедурного, наподобие Си. Отталкиваясь от этого «недоязыка», переизобретем функциональное и объектно-ориентированное программирование.
Читать дальше →

Информация

В рейтинге
1 981-й
Зарегистрирован
Активность