Рубрика: lang

Теоретический минимум

Есть у айтишников серьёзная проблема — они слишком часто верят на слово. И готовы всерьёз обсуждать безумные домыслы. Легендарный Теоретический минимум для программиста — одно из таких безумств. Начнём с первой строчки — то есть с названия. Теорминимум Ландау (кто сдавал, тот знает) — это не список книг и даже не список задач. И сдавать…

Прочитать статью целиком

Загадка enum-а в C++

Ещё детстве я недоумевал, почему enum в C++ не считается name­­space-ом. Вот в этом примере мы явно засорили публичное пространство непрошенными глобальными перемеными. enum Col­or { red, green, blue }; Col­or r = red; switch® { case red : std::cout » “red\n”; break; case green: std::cout » “green\n”; break; case blue : std::cout » “blue\n”;…

Прочитать статью целиком

(Мета) программируем Redux

На авторе документации, справок и обучающих материалов лежит большая ответственность. Страшно подумать, сколько ужасного кода попало в общедоступный пример и пошло гулять по исходникам просто потому, что справку писал стажёр, которого взяли за две недели до релиза. Рассмотрим классическую пару action/reduce в redux. action хронически пишут свой для каждого объекта приложения. Хотя как раз действия…

Прочитать статью целиком

Загрузка файла в Django REST Framework

Учимся загружать файл через стандартное API Djan­go REST Frame­work. Загруженный файл приходит в request.FILES, класс Upload­ed­File. Для HTML-формы должно быть установлено enctype=“multipart/form-data” и она должна заливаться через POST. Идут годы, а формы в HTML не меняются… В Djan­go Mod­el есть специальный поля для хранения загруженных файлов — File­Field и Image­Field. Они хранят, разумеется, не в базе, а на…

Прочитать статью целиком

jQuery UI control в React на примере FormBuilder

jQuery UI — симпатичная библиотека. У неё есть недостатки — она тяжелее Boot­strap и довольно старая. Но бывает, что нужный компонент есть только под неё. А у тебя проект на одном из React-фреймворков… Для примера попробуем подключить старый jQuery Form­Builder. Это просто отличный редактор форм. Конечно, есть другие. Есть даже редактор форм под React… но…

Прочитать статью целиком

Динамически создаём React-компоненты

Иногда нужно создавать React-компонент динамически и даже в цикле. Но ren­der(), само собой, не желает выполнять циклы и начинает ругаться. Чтобы создавать компоненты динамически, пишите по этому образцу. В зависимости от фреймворка можно заменить вызов на создание класса и отформатировать arrow-функциями. let Block = React.createClass({ cre­ateIm­age: func­tion (image) { return <Image source={image} key={image} />; },…

Прочитать статью целиком

Вышел ya-api-direct 0.2.6

Как оказалось, от моего пробного gem-а ya-api-direct сделали 4 форка. В каждом добавилось что-то полезное. Причём pull request сделал только один. Сделал merge в проект и выпустил новую версию. Всего его скачало порядка 3000 человек. Кто все эти люди — для меня загадка.

source для virtualenv под windows

Иногда бывает нужно сделать свой, небольшой локальный Python-мирок. Например, если мы пишем на djan­go и не хотим ставить пакеты глобально. Это очень поможет, когда намного позже мы будем собирать инсталлятор к проекту. Мы сможем одной командой pip узнать, какие пакеты нужны. Как это делается сейчас Python 3 научился создавать vir­tualenv штатными средствами. Вот так: python3…

Прочитать статью целиком

Как C и Perl захватили планету

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

Прочитать статью целиком

Пишем Ruby gem для Yandex Direct API

Очень хотелось изучить Ruby получше, а рабочего проекта не было. И я попробовал написать gem для работы с Yan­dex Direct API. Причин было несколько. Среди них: Yan­dex Direct API очень типичен для Яндекса и современных REST-сервисов вообще. Если разобраться и преодолеть типичные ошибки, то можно легко и быстро написать аналоги для прочих API Яндекса (и…

Прочитать статью целиком