Записи с меткой "кодинг"
28 января 2013
Теоретическая задача: на Javascript создать единый код для обработки многоуровневых меню, выпадающих в любом направлении (слева/справа или снизу/сверху). Т.е. решить не частную задачу, а общий случай. Вообще задача изначально носила практический характер. Нужно было прикрутить менюшку к одному коммерческому проекту, причем времени на разработку не было. Пошарился в инете, найденные решения меня не устроили. Либо заточены под один вид меню, либо ограничения по уровням. Нашел даже совсем экзотический вариант, на дли-и-и-инном css-управлении. Все-таки пришлось делать свое, универсальное.
6 ноября 2012
В который раз пытаюсь освоить ассемблер и не знаю, на сколько меня хватит. Какими путями я опять пришел к нему, не буду рассказывать. Скажу просто - "надо" :) Вооружившись Гуглем и отбрасывая все, что на данный момент мне не нужно, принял за старт архив рассылки О. Калашникова "Ассемблер? Это просто! Учимся программировать (2001)". Есть еще одноименная книга, но мне пока достаточно chm-файла с выдержками из нее. Внимание! В этом архиве рассылка неполная! За продолжением нужно лезь на соответствующие сайты.
21 октября 2012
Получил заказ: нужно переделать отчет в готовом проекте Access. Вроде бы ничего сложного, но разработчик через параметры запуска проекта скрыл все менюшки и окно базы данных. Т.о. добраться до исходников невозможно.. почти. Немного погуглив нашел старый vbs-скрипт, качующий с сайта на сайт. Чтобы больше не искать, размещаю его здесь. Может пригодится еще.
13 апреля 2012
Мне нужно было разобраться, как именно работают функции curl_multi_*, представленные в PHP, почему так разнятся примеры не только в инете, но даже в справке PHP, что на самом деле происходит. CURL в PHP - это инкапсуляция настоящих функций библиотеки и еще некоторых других. При этом PHP использует не все функции libcurl, да и справка оставляет желать лучшего. Дабы не тыкать вслепую пимпы на клаве, перебирая варианты чужого кода, я решил постичь истинный смысл функций мульти-cURL и их параметров.
2 марта 2012
На работе возникла практическая задача: в логе прокси-сервера найди записи по фильтру. Лог - это обычный текстовый файл, так что наиболее простое программное решение - читать его построчно через pascal-функции Reset() и Readln(). Накидал программку, обкатал ее на копии файла, все прекрасно. Но такую прогу нельзя применить к текущему логу, т.к. функция Reset() блокирует файл на запись. Решением стало применение функций WinAPI для чтения файла. В итоге у меня получился аналог функций Паскаля для построчного чтения файла через WinAPI.
3 февраля 2012
Неудачное сочетание двух функций в Delphi 7 стоило мне нескольких часов жизни и много нервов. Зато мне удалось наконец поймать непредсказуемый PChar за хвост. Я и раньше сталкивался с необъяснимыми косяками, корнями идущими из бардака в pchar-переменных. Но сколько я об этом ни читал, сколько не копался - смысл не доходил. Теперь же я на 90% уверен, что точно знаю, чего ожидать от этого типа.
1 декабря 2011
При запуске программы получается ошибка "Приложение не было запущено, поскольку оно некорректно настроено". Очень полезная инфа, нефиг сказать :) Далее в этом же сообщении предлагается переустановить приложение. Итак, почему вдруг на чистой машине с только что установленной WinXP перестала работать любимая игра или программулина?
8 ноября 2011
Речь пойдет о библиотеке cURL (aka Client URL, libcurl) и ее использовании в PHP. Об этом уже много всего написано, поэтому я не буду проводить ликбез. Я расскажу о тех возможностях библиотеки, которые мне особенно доставляют. Не знаю, с какими благими намерениями создавал это чудо Daniel Stenberg, я использую ее в корыстных целях :)
19 сентября 2011
Есть как минимум два языка программирования, способных управлять cookie - PHP и Javascript. Есть множество браузеров, поддерживающих работу с печеньками. И есть проблема: удаление этих самых cookies может выполняться по-разному, в зависимости от языка/браузера. В этой статье я расскажу о своих изысканиях и кроссбраузерном подходе к манипуляциям с cookie.
29 августа 2011
Задача: удалить однострочные/многострочные комментарии, tab-отступы, пустые строки в js-скрипте. Так же нужно учесть, что в коде возможны экранированные back-slash и кавычки. После всего удалить переносы строк, чтобы получится весь код в одной строке. Разбить код на строки заданной длины.
Я не знаю, зачем последнее действие, но все "обфускаторы" так делают =-). Приведенный в статье скрипт я считаю упаковщиком, потому что он уменьшает вес конечного файла, а еще - мне так больше нравится :) Зачем все это нужно, я уже писал здесь. В двух словах: этот скрипт чистит js-файлы для загрузки на сервер.
26 августа 2011
Мои сайты сделаны в кодировке windows-1251, включая БД. Возникла необходимость получить файл в кодировке UTF-8 (собираю dump-файл базы). Как оказалось, преобразование из одной кодировки в другую - задача не тривиальная. В этой статье я попытаюсь разложить по полочкам, что к чему. Поле деятельности: Apache/2.2.15 (Win32) PHP/5.3.5. Во внимание беру только две кодировки, UTF-8 и Windows-1251 (aka cp1251), но многое из сказаного относится к преобразованиям в любых кодовых страницах.
19 августа 2011
Понесло меня по теме времени :). Не нашел, где разместить эту php-функцию, поэтому оформляю, как новую запись. Применение функции: передаем ей UTC-значение времени (timestamp) и нужный часовой пояс (число), получаем timestamp-время в указанном поясе с учетом летнего/зимнего времени.
19 августа 2011
Продолжаю тему "временных аномалий" в MySQL :) У меня с хостером разные часовые пояса: у него - GMT+3:00, а на моих сайтах GMT+8:00 (об этом на сайтах скрипты заботятся). Добавлять новости на сайт это не мешает, т.к. время пишется через mysql-функцию now() (текущее значение времени). Проблема появляется, когда мне нужна синхронизация записей с локальной копией БД. Делаю следующее: через phpMyAdmin экспортирую БД в файл - dump.sql, потом загружаю его на своем (местном) сервере MySQL. После такой синхронизации я получаю разницу во времени в 5 часов в каждой записи, где вообще есть время. Покопался и нашел причину! :)
18 августа 2011
Ничто не постоянно, даже время :) Особенно если речь идет о времени в PHP/MySQL. Когда я первый раз столкнулся с проблемой преобразования времени в PHP, я долго копался в мануалах и инете, но ни как не мог поймать суть. В итоге я все же нашел свою ошибку, все подробно для себя описал в txt-файле и забыл. Сейчас (спустя полтора года) опять возникли запарки, поднимаю текстовик.. и ничего не могу разобрать. Пришло время систематизировать записи про время (вот такой каламбурчик ;))
10 августа 2011
Упаковщик не в смысле архивации, а в смысле чистки css-файлов от пустых строк и комментариев. Слово "упаковщик" более удобно, чем "чистильщик" или т.п. Файл в итоге получается меньше без потери функциональности, поэтому так "громко" назвал :)
Проблема: на локальной копии сайта я храню файлы стилей с комментариями, а на сервере они должны быть чистыми. Перед первой загрузкой на сервер подчистил все. Теперь у меня две версии - с комментами и без них. При изменении в одной версии приходится повторять изменения в другой. Не удобно, напрягает и все такое :( Надо что-то делать.
5 августа 2011
Сама суть: сейчас (5 августа 2011) на офсайте PHP уже нет русской справки для скачивания. Недавно была здесь, и я успел ее забрать. Только она была в виде 10k html-файлов! Другой вариант, предлагаемый тогда на сайте - один оооочень большой html-файл. Вообщем я убил три дня на раскопки и разбирательства c форматом и наконец сваял справочник в chm-формате.
8 июля 2011
Сервер MySQL 5.1. Есть в его реализации замечательный оператор HANDLER. Он обеспечивает прямой доступ к интерфейсу обработчика таблиц MyISAM и InnoDB, минуя оптимизатор SQL. Следовательно, этот оператор работает быстрее, чем SELECT. Прежде чем показать, где проблема, коротко расскажу о синтакисе оператора. Далее копипаст справки по MySQL, ничего нового нет, причем я уберу из нее не относящее к дело.
5 июля 2011
В HTML некоторые символы имеют специальное значение и для сохранения своего значения должны быть преобразованы в HTML-сущности. Начиная с 3-ей версии в PHP для этого есть функция - htmlspecialchars(). Работает отлично, но проблема в том, что на преобразует весь html-документ. У меня возникла необходимость преобразования спец. символов только в части документа, а именно сохранение "внешнего вида" угловых скобок в примерах кода на html-страницах.
4 июля 2011
JavaScript меня иногда в тупик ставит. Причем не баги реализации, а количество свободы в нем. Кстати, багов в js я еще не видел.
Есть у меня некий код. Для примера упростил его максимально. Суть: есть строка, состоящая из цифр. Это - цифровые флаги. Функция разбирает строку на части и согласно полученных цифровых флагов готовит html-код таблицы для вставки на страницу. Каждая шестая и седьмая ячейка нужна другого цвета (практический пример - календарь в меню этого сайта). Еще замечу, что рабочий код этого календаря я сделал много раньше, только попроще. Теперь мне нужно было сделать его слегка круче.
26 мая 2011
Ситуация: грузится страница в браузер. По ссылке должен запуститься java-апплет, вместо этого получаю локаничное "Applet ... notinited" (орфография сохранена).
Окружение: WinXP, IE8, Java (JRE) 5.0 Update 14. Системный диск NTFS, пользователь и машина в домене.
Если бы все работало, то получил бы три подряд статуса: "Applet ... loaded", "Applet ... inited", "Applet ... started". Открываю консоль - ничего не понятно.. Беру лопату и начинаю копать.