Дилемма программиста

Дата публикации: 01/11/2009

Изучение практически любого языка программирования начинается с написания хрестоматийной программы "Hello, World!", но следует признать, что в современном мире программирования этого уже давно недостаточно. Настоящее таково, что собственно язык программирования - это всего лишь небольшая часть тех знаний, которые нужно приобрести, чтобы написать работающую программу. Язык программирования нынче - это некое связующее звено между концептуально чистой идеей и API платформы.

Классический BASIC, который позиционировался как язык для обучения программированию, не был предназначен для написания полнофункциональных программ. Хотя некоторые и пытались его использовать для этих целей, но концептуально он для этого не подходил. Множество современных языков программирования, которые продолжают появляться до сих пор, связаны с определенным мировоззрением их авторов на решение той или иной задачи. Точно также, как наш с вами язык общения влияет на образ наших мыслей, так и у программиста, долго использующего один язык программирования, вырабатывается определенный способ мышления. Это приводит к тому, что хорошо знакомый язык программирования стараются приспособить для решения проблем, к которым он, скажем так, не совсем приспособлен. Или, говоря с технической точки зрения, требует написания гораздо большего количество кода, чем на другом более подходящем языке.

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

Теги: мысли, программирование

Кусочничаем понемногу

Дата публикации: 13/10/2009

Часто небольшие фрагменты кода, показывающие как можно сделать ту или иную вещь, полезнее объемной документации. На каком бы языке вы не программировали, всегда есть некоторый набор типовых действий или стандартных задач. У каждого разработчика, конечно, есть свой подход к решению проблемы и свои варианты решения подобных задач. А теперь представьте себе большой репозиторий, в который разработчики могут выкладывать такие небольшие фрагменты кода. Их еще называют сниппетами - от английского snippets. Именно о таком сайте, который недвусмысленно называется Code Snippets, я и хочу вам рассказать.

Code Snippets - сайт для разработчиков

По сути, сайт "Code Snippets" представляет собой базу данных с возможностью любому разработчику зарегистрироваться и пополнить общую копилку своими знаниями. На сайте есть система присвоения рейтинга, которая рассчитывается как число просмотревших данный сниппет посетителей. Также присутствуют вездесущие теги для быстрого поиска нужного языка программирования.

Кстати, о языках программирования и связанных с ними фреймворках. На данный момент в системе их уже под сотню, начиная с таких распространенных языков и фреймворков как C, PHP и jQuery и заканчивая такими, названий которых я даже не знаю - скажем, Scala и VHDL.

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

 function is_valid_email($email)
 {
    if(preg_match("/[a-zA-Z0-9_-.+]+@[a-zA-Z0-9-]+.[a-zA-Z]+/", $email) > 0)
        return true;
    else
        return false;
 }

Или, возьмем пример посложнее. Скажем, программируете вы что-то для iPhone и потребовалось узнать, как на Objective-C прямо из приложения можно открыть ссылку в Safari. Немного поиска и вы находите нужный сниппет:

 NSURL *url = [[NSURL alloc] initWithString:@"http://www.cnn.com"];
 [[UIApplication sharedApplication] openURL:url];

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

Перейти

Теги: он-лайн сервисы, программирование, справочники

Краткость - сестра таланта

Дата публикации: 08/10/2009

Справочная таблица по PHP

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

Подробный справочник - штука большая и увесистая. Найти в ней даже часто используемые конструкции или функции не так-то просто! И чтобы справиться с этой проблемой, человечество придумало небольшие одностраничные справочные таблицы (по-английски они называеются "Cheat Sheets"). Обычно там указаны только базовые конструкции и наиболее часто используемые функции, но этого вполне хватает в половине случаев, когда нужно быстро освежить свои знания.

И если вы занимаетесь разработкой сайтов и используете связанные с этим технологии, такие как: HTML, CSS, PHP, JavaScript, MySQL, RegExp, Python и т.п., то Вам может очень пригодится сайт Added Bytes. Автор сайта совершенно бесплатно создает и публикует подобные справочные таблицы по вышеперечисленным технологиям в форматах PNG и PDF. Наиболее удобен последний формат, а его размер выбран как раз под размер стандартного листка бумаги формата A4.

И еще подобные справочные таблицы могут очень пригодится преподавателям соответствующих дисциплин. Я практиковал это со своими студентами при чтении курсов по созданию сайтов. Было очень удобно напечатать штук 20-30 таких справочных таблиц и раздать их в помощь студентам.

Перейти

Теги: программирование, справочники

Чтение текущего курса валют при помощи PHP

Дата публикации: 22/04/2009

Возникла у меня необходимость в автоматическом режиме получать курс доллара и евро, чтобы использовать их на сайте для автоматического пересчета цен. Стал думать, как это можно сделать наименее затратным способом. В общем случае, конечно, можно вытащить эту информацию с любого сайта, транслирующего курс доллара - с того же RBC, скажем. Но логичнее всего все-таки брать информацию с первоисточника, т.е. с сайта Центробанка Российской Федерации. И тут оказалось, что сайт центробанка транслирует эту информацию в виде RSS-ленты! Причем можно узнать курс нескольких валют и на любую дату, включая также и текущие курсы валют. Подробное описание всех сервисов сайта для web-мастеров приведено на отдельной страничке, что очень мило с их стороны.

Понятное дело, что из RSS-потока уже гораздо проще вытаскивать нужную информацию. При этом, если у вас есть под рукой готовый парсер XML, то все вообще элементарно. Но мне нужно было достаточно простое и быстрое решение, поэтому я обошелся только обычными PHP-функциями и в конце-концов написал вот такой скрипт.

 <?
 
 // Чтение курса валют с сайта Центробанка РФ
 $rates = "";
 
 // Адрес странички на сайте Центробанка РФ для запроса курса валют
 $url_request = "http://www.cbr.ru/scripts/XML_daily.asp";
 
 // Читаем RSS-поток с данными о курсе валют в строку
 $data = @file($url_request);
 
 // Обрабатываем курсы валют только в случае успешной загрузки
 if (!empty($data)) {
 
     // Анализируем каждую строку в поисках идентификатора валюты
     reset($data);
     while(list($id, $string) = each($data)) {
 
         // Убираем лишние пробелы и переводим строку в нижний регистр
         $string = strtolower(trim($string));
 
         // Определяем строку с кодом валюты и читаем курс обмена
         if (substr($string, 1, 8) == "charcode") {
 
             // Находим код валюты
             $currency = strip_tags($string);
 
             // Читаем курс валюты
             $string = strtolower(trim($data[$id+3]));
 
             // Добавляем найденное значение в список валют
             if (substr($string, 1, 5) == "value") {
                 $rates[$currency] = str_replace(",",".", strip_tags($string));
             }
         }
     }
 }
 
 ?>

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

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

Перейти

Теги: PHP, программирование

Решение проблемы с кодировками в MySQL

Дата публикации: 12/12/2008

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

Вот так выглядит страничка сайта со сбитой кодировкой в базе данных

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

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

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

Теги: MySQL, базы данных, программирование, решение проблем

"Волшебные кавычки" в PHP

Дата публикации: 08/10/2008

Как известно, PHP делает много дополнительной работы, предоставляя программисту уже обработанные данные. В частности, это относится к обработке данных, передаваемых в программу. Способ передачи может быть различным - это и заполненная форма и информация содержащаяся в "cookies" и загруженные пользователем файлы. Программист автоматически получает эти данные через переменные, которые создает PHP. Лучше всего для чтения данных введенных пользователем использовать специальные глобальные переменные:

 $_GET, $_POST, $_COOKIE и $_REQUEST

Эти переменные представляют собой ассоциативные массивы, содержащие все переданные пользователем данные. Первые три, как понятно из их названия, содержат данные переданные тем или иным способом, а вот глобальная переменная $_REQUEST это объединенный массив из трех предыдущих переменных. При этом, при совпадении имен переменных, происходит их переопределение в порядке заданном в настройках PHP.

И есть одна тонкость при обработке значений переменных, содержащих в себе спецсимволы, к которым относятся: апостроф('), кавычки (") и обратный слеш (\). Такие спецсимволы должны экранироваться при помощи обратного слеша, чтобы показать, что в данном случае они выступают как символы, а не как элементы языка программирования.

Для просмотра полного текста заметки, перейдите по ссылке. Собственно говоря, то что описано далее в заметке это один из возможных способов решения проблемы, использованный в движках "Wikipad" и "Photopad", что позволяет им корректно работать даже на нестандартных хостингах. Обновленные версии движков выложены на официальном сайте поддержки этих проектов.

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

Теги: PHP, программирование

Смотри также