+3.41
8 читателей, 60 топиков

Соревнования по программированию. Где можно показать себя?

Недавно Facebook анонсировал свое соревнование по прогрммированию: Hacker Cup. Я ждал, что статья о нем на хабре появится сразу, но нет, поиск по такому запросу возвращает пустой результат.

Тогда я сделал поиск по запросу TopCoder Open и Google Code Jam, и, как и ожидалось, увидел только несколько статей с результатами соревнований. Значит надо заполнить эту нишу и написать статью о том, что же такое соревнования по программированию, с чем их едят, и как ты, дорогой хаброюзер, можешь в них поучаствовать, и что тебе это даст.

Я расскажу исключительно о так называемом «спортивном» программировании.

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

Перестановка символьных значений местами без использования промежуточной переменной в PHP

Вводная



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

Есть несколько вариантов такой перестановки: «Перестановка через XOR», «Перестановка через арифметические вычитание и сложение», не буду приводить их здесь полностью, любопытные могут воспользоваться ссылкой в конце текста.

Собственно созерцание этих алгоритмов навело меня на мысль о возможности перестановки строковых (символьных) значений.
Читать дальше →

Бытовое програмирование

Наверно каждый задумывался сколько будет 356+452? На решение этого задания в среднем уходит до 3ех минут.

Многие школьники (8+ классов) не умеют находить корни уравнения x2-7x+10=0 (в уме), я уже не говорю о 2x2-14x+20=0. Как решить эту проблему с минимальными затратими? Все очень просто: компьютер мне в руки!


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

О программировании и не только

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


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

Простая шифровка методами Javascript

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

А задание в данных условиях самое что ни на есть гадкое, а именно обеспечить контент, закрытый от посторонних глаз и доступный исключительно избранным. Казалось бы ну никак не сохранить от этого юзера данные, они ведь ему передаются в самом что ни на есть открытом виде и никаких тут тебе «на стороне сервера». Но мы то знаем, что есть такая штука, как шифрование и средствами javascript и dhtml его обеспечить очень даже можно.


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

Язык программирования не выучить за месяц

Выучить один из основных языков программирования за месяц невозможно. Опытный программист решит поставленную задачу с помощью незнакомого языка в короткие сроки, если задача типовая, а кардинально непривычных конструкций нет. Грубо говоря, любой может за день на любом языке написать “Hello, World!” на любимом языке, но не следует путать это со знанием. В вузе можно некоторое время учиться для галочки по методу “зазубрил, сдал, забыл”, а в резюме при поступлении на первую работу указать “Владею C, C++, Python, Java, Javascript, ASM, PHP, Ruby, SQL” (потратил девять месяцев и стал универсалом), чем позабавить принимающую сторону. В жизни после вуза требования к уровню знаний специалиста другие.

Так после чего можно сказать, что выучил?

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

И снова Rails vs Django

Предисловие


За несколько лет успешной и не очень работы с различными Web-CMS у меня появилось непреодолимое желание научиться писать веб-проекты на более «высоком» уровне. Хотя технически все же правильнее будет сказать «на более низком». Крайне не хватало для реализации своих идей функционала известных движков. А разбираться в API и исходниках каждого (для написания расширений и модулей) мне показалось слишком муторным.

И тогда мой взгляд упал на веб-фреймворки. Конечно же, на наиболее популярные: Ruby on Rails, Django (Python) и php-шный Symphony. Желание изучать последний отпало почти сразу — когда работал в офисе, от коллеги-программиста, писавшего серверную часть проекта на связке Php+Symphony+Doctrine, слышал слишком много нецензурных слов.

Поэтому принялся гуглить на темы «питон против руби», «рэилс против джанго». И каково же было мое разочарование, когда итогом всех статей и постов на эти темы была фраза: «попробуйте и то и то, а дальше сами решайте»

Я попробовал. И то и то. По чуть-чуть, но с выбором быстро определился. Итак, Rails 3.0 против Django 1.2 по версии начинающего свой путь веб-программиста.


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

Пишем интерпретатор LISP на PHP

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

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

Компактный и гибкий Javascript шаблонизатор

В последние дни на Хабре одна за одной вышли несколько статей посвященных шаблонизаторам на Javascript.
Идея вынести «View» из паттерна MVC на сторону клиента очень интересная, но поизучав существующие билиотеки я понял что мне категорически не хватает их возможностей. Простейший обход свойств объекта зачастую был невозможен.
Естественным образом родилась идея использовать в качестве языка разметки тот же Javascript.

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

«Именованные параметры» в Delphi

Иногда возникает ситуация, когда в функцию требуется передавать много различных параметров, но при этом необходимый набор этих параметров может сильно различаться. В таких случаях, для Delphi, как правило, есть несколько путей решения:
  1. Просто забить все возможные параметры в интерфейс функции.
  2. Сделать множество перегрузок функции на все случаи жизни.
  3. Передать параметры массивом.
  4. Воспользоваться обходным путём. Например, вынести параметры в класс и проставлять их перед вызовом функции.
Всё эти способы получаются довольно громоздкими в реализации и имеют массу недостатков. А самое главное, что над их реализацией необходимо думать в каждом конкретном случае отдельно — не существует простого общего решения.

В некоторых языках (Scala, Python, Ruby...) такой проблемы не стоит в принципе — там есть такая замечательная вещь как именованные параметры. В Delphi же приходится всегда следовать установленному порядку аргументов. Не спасают даже значения по-умолчанию (их не всегда можно применить из-за конфликта типов, к тому же их использование нередко приводит к путанице).

Однако, используя небольшую хитрость, в Delphi вполне можно написать, к примеру, вот так:

ProcessParams(Par('Param1', 'test') + Par('Param2', 38) + Par('Param3', 3.2));

При этом в функцию ProcessParams придёт массив из трёх записей, содержащих пару «имя — значение». Такая запись становится возможной благодаря модулю объёмом всего 40 строк:


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