Рубрика «Программирование» - 1070

image
У нас в гостях разработчик компании «Mail.ru Group» Артем Гришанов. Артем рассказывает про то, как живется и работается в социальной сети «Одноклассники», какая специфика в работе с особо крупными заказчиками. Говорим про русского хакера, легко и непринужденно обошедшего механизм встроенных покупок в приложениях AppStore. Законопроект, вызвавший бурные обсуждения пользователей на прошедшей неделе. Будет ли он помогать бороться с «плохими» ресурсами рунета и так ли все однозначно. Британским судьям нравятся планшеты от Apple.

В выпуске:

Слушать в Itunes
слушать на podfm
скачать файл(54.7 Мб)
Читать полностью »

Решил выложить описание и свою программу по составлению расписаний от 2001 года. В моём ВУЗе, на сегодняшний день, ей пользуются практически все крупные факультеты. Вкратце: она может быть и редактором и составлять расписание полностью автоматически или частично для выбранных элементов, сохраняет свои данные в формате Microsoft Access 2000, экспорт расписания групп, преподавателей и аудиторий в виде таблиц Microsoft Excel 2000 и сама написана с использованием MFC 4.2.

Мое глубокое убеждение, что создать программу по составлению расписания для ВУЗов и заработать на ее распространении невозможно, если у Вас нет лапы там наверху и все ВУЗы просто не обяжут ее покупать. Но разработав общее для всех ядро, программисты «на местах» смогут это сделать в той или иной степени.

Думаю, этот топик, с точки зрения разработки всем известной задачи, будет интересен для прочтения практически всем.Читать полностью »

Уби Де Фео ведёт курсы по программированию Arduino для начинающих в голландской творческой мастерской «Hello, savants!». Основная аудитория — дизайнеры, художники и другие далёкие от компьютеров люди, которые хотят научиться использовать технлогии для создания интерактивных презентаций, прототипов, арт-объектов — то что называют «creative coding». Его ученики не имеют проблем с образным мышлением и креативностю, зато абстрактные концепции математики и программирования часто становятся непреодолимым препятствием. Поэтому Де Фео решил для начала вообще отказаться от использования компьютеров. На вводных уроках курса «From 0 to C» используются только блокноты, ручки, шарики для пинг-понга, картонные каробки, конфеты M&M's.

Читать полностью »

QJson как библиотека для работы с JSON в Qt
Привет!

На хабре еще не писали про QJson — отличный и очень простой инструмент для работы с JSON на Qt. Вообще Qt рекоммендуют использовать XML — но мне кажется что в очень многих случаях он бывает чересчур уж избыточным или лишним. В некоторых случаях лучше использовать JSON. В этой заметке я расскажу как скачать, собрать и использовать QJson для работы с JSON в Qt.

Внимание! Этот пост — заметка. Все что вы тут прочитаете можно найти в гугле и на офф сайте проекта — но я думаю что такая заметка не будет лишней.
Читать полностью »

О софистике (софизмах) в дискуссиях и об ООП

Поскольку писать комментарии в режиме «read-only» не положено, снова рискну написать в песочницу.

Вступление

Читая хабр, споткнулся об один из комментариев. Вернее сказать, споткнулся о цитату в этом комментарии:

«Я уверен, что ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, лишь тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой.
Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг — из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле».
(с) Александр Степанов, со-автор C++, автор STL

Перед тем, как перейти к сути этой заметки (а точнее — к анализу приведенной цитаты Степанова), также хочу вспомнить небольшую статью с провокационным анонсом («софистика — это математика для жуликов»), которая как-то попалась мне на глаза в глянцевом журнале (что само по себе уже странно; нечасто удается в таких журналах на что-то обратить внимание). Электронная версия здесь. Далее я буду ссылаться на термины из этой статьи, поэтому рекомендую ознакомиться.
Читать полностью »

Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

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

И вот несколько вещей, которые вызывают у меня непонимание.
Читать полностью »

У меня достаточно много опыта в программировании, накопленного за последние несколько лет. Часть опыта я приобрёл работая в своей команде, что-то при работе с клиентам, а некоторый опыт появился благодаря coding dojo и работе на open source проектах.
Для программистов знающих как использовать парное программирование оно предоставляет возможность улучшить свою производительность. Но при этом не стоит ожидать, что программисты значительно улучшат свою производительность с самого начала работы. Парное программирование требует постоянного обучения, а также осознания самими программистами чёткой разницы между исполнителем (тот кто стучит по клавиатуре), и штурманом. Ниже приведено более детальное описание.
Читать полностью »

… и функциональное программирование тоже.

Так получилось, что, несмотря на знакомство со множеством парадигм и техник программирования, я не придерживаюсь строго ни одной из них. Впрочем, и ни одну из них не считаю отстоем. Почему?

Потому что программирование — это искусство оперирования абстрактной информацией. Это очень сложное искусство — поскольку человеческий мозг вообще не приспособлен для оперирования абстракциями.

Почему я люблю ООП и применяю его в своих проектах? Потому что концепция классов и объектов облегчает мне оперирование абстрактными сущностями, которые я удерживаю у себя в голове. Многие из них (этих сущностей) действительно похожи на сходящие с конвейера штампованные изделия, состоящие из n рычагов, выполняющие m функций и имеющие какое-то внутреннее, скрытое от пользователя состояние.

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

Почему я люблю MVC-подход или прототипы, например? Да потому же. Каждая парадигма, техника, паттерн и технология, в конечном счёте, нужны для того, чтобы сделать модель приложения в моей голове более ясной и удобной — а значит, для того, чтобы я мог написать более элегантный код с меньшим количеством ошибок. И ещё для того, чтобы человеку, который будет этот код поддерживать, тоже было легко составить в своей голове картину того, как это всё работает.

Читать полностью »

Программистской деятельностью занимаюсь давно. Работаю в основном в сфере OpenSource, и делаю бесплатные продукты для Windows/Linux и для веб/wap.

Последнее время времени стало катастрофически нехватать (простите за каламбур), и в связи с этим пришла в голову мысль о продаже разработки со всеми имеющимися наработками и правами на реализацию и продвижение (и доработку, соответственно).
Читать полностью »

Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте:

YaLinqo — Yet Another LINQ to Objects for PHP

Возможности:

  • Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов.
  • Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
  • Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
  • 100% покрытие юнит-тестами.
  • Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
  • Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
  • Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.

Пример кода:

// Отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории,
// отсортированные по имени. Продукты отсортировать сначала по убыванию количества, потом по имени.

from($categories)
    ->orderBy('$v["name"]')
    ->groupJoin(
        from($products)
            ->where('$v["quantity"] > 0')
            ->orderByDescending('$v["quantity"]')
            ->thenBy('$v["name"]'),
        '$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)'
    );

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js