• Занимательный web-квест. Узнай весь URL
    0
    Напомнило www.deathball.net/notpron/, только попроще.
  • Django tips & tricks
    +4
    В two scoops of django читал про другой подход: версионируются абсолютно все настройки (settings/prod.py, settings/dev.py и т.д). А всякие SECRET_KEY, пароли от БД и т.д выносятся в переменные окружения.
  • Reverse-инжиниринг Caesar III (часть 2, Рисование города)
    0
    Было бы круто сделать в ремейке возможность поворачивать здания. Можно будет строить красивые кварталы, поворачивать домики входом к дороге.
  • Back-инжиниринг Caesar III
    0
    Вот есть список, правда он не полный.
    Glory of The Roman Empire, например, но это ближе к Цезарю.
    Могу еще посоветовать Dungeon Keeper, правда это не совсем экономическая стратегия, ближе к dwarf fortress.
  • Back-инжиниринг Caesar III
    +1
    Игр похожих на по стилю на Banished, к сожалению, не знаю.
    Судя по всему вам интересны стратегии немецкой школы.
    Могу посоветовать Knights & Merchants (в этой игре дороги обязательные). Есть активно разрабатываемая open-source версия kamremake с нормальным мультиплеером, все фичи из оригинальной игры реализованы.
    Из похожих на K&M — Cultures и Затерянный мир (Alien nations).
    Судя по скриншотам может быть вам еще понравится серия Tropico, но в нее я не играл.
  • Back-инжиниринг Caesar III
    0
    Попробуйте Banished.
  • Back-инжиниринг Caesar III
    0
    Еще удачный пример: kamremake.com — ремейк Knights & Merchants. Для запуска требует оригинальную версию, купленную на GOG.
  • Некоторые проблемы Nokia Lumia 1520 в одном посте
    +7
    > Нет ютуба
    А это что? Из вашей же картинки.
    Скрытый текст
    image
  • Полет над метановыми озерами Титана: видео от NASA
    +2
    > я даже когда-то слушал аудиозапись, сделанную этим зондом при падении
    Если кому-то интересно, вот она (на 1:17):
    www.youtube.com/watch?v=36ffV-CI3Mo
  • Глава Microsoft уходит в отставку. Оптимистичный вариант статьи
    +14
    Microsoft это не только винда и логотип, если что.
    > Капелька IMHO и фактов.
    Где факты-то?
  • Собственно, этим я и собираюсь заниматься
    +35
    Я не хочу работать над 0x10c, я хочу стримить тф2 и делать прототипы игр, от которых у вас будут течь слюнки, но никогда не буду доводить их до релиза, ведь я уже нормально срубил бабла на майнкрафте.

    Как-то так.
  • Петиции, требующие запретить игру «Company of Heroes-2» в СНГ, набрали около 15 тысяч подписей
    +6
    Зачем запрещать? Поставьте игре ограничение 18+, например.
  • Поиск через sphinx в django 1.6 admin
    +1
    Очередной проект на выходные, у которого никогда не будет релиза.
  • Поиск через sphinx в django 1.6 admin
    0
    Ну например, чтобы поиск в сфинксе возвращал инстансы джанговых моделей, как это сделано в django-sphinx.
  • Редактирование конфигов в Python
    +5
    Вроде здорово, но такая штука должна быть покрыта тестами обязательно, иначе страшно использовать.
    Посмотрел на гитхабе, тесты вроде есть, но насколько я понял они просто проверяют валидность загрузки и сохранения, а надо бы еще тестировать редактирование и добавление новых строчек.
  • Порт «Age of Empires» для смартфонов выйдет до конца года
    0
    > ждем HMM3,5
    Не обладатель андроида, но вроде оно: play.google.com/store/apps/details?id=eu.vcmi&hl=en

    vcmi — проект по воссозданию третьих героев. wiki.vcmi.eu/index.php?title=Main_Page
  • Экранирование (или что нужно знать для работы с текстом в тексте)
    –2
    > Если мы применим экранирование к пользовательским данным до объединения их с запросом, то проблема решена.
    Представим что есть запрос
    select * from table where id = $id
    

    Если в $id находится 1 OR 1=1, то получим запрос
    select * from table where id = 1 or 1=1
    

    mysql_real_escape_string тут не поможет, т.к это просто экранирует специальные символы, которых может и не быть.
  • Экранирование (или что нужно знать для работы с текстом в тексте)
    –8
    mysql_real_escape_string не защищает от sql-инъекций, использовать надо только плейсхолдеры.
    $id = '0; drop database some_db;';
    print mysql_real_escape_string($id);
    

    0; drop database some_db;
  • Опыт обучения школьников программированию
    +1
    Слишком многословно все. Если такие дети могут понять что такое static void и namespace то можно сразу и С# показывать.
    Я бы наверно начал с питона. Hello world is just print 'Hello, world!'
  • 4 шага на пути в Google, не имея высшего образования
    +62
    TLDR: станьте профессионалом в Computer Science и пройдите собеседование
  • Декораторы в PHP
    0
    Это просто превращение всех ошибок в исключения. Не совсем то.
    Нам-то нужно ловить именно аналог IOError (ошибки операции с файлом), а размытое понятие ErrorException ни о чем конкретном не говорит.
  • Декораторы в PHP
    0
    Подход в корне другой.
    То что не удалось открыть файл, это еще не повод генерировать ошибку, я могу пытаться проверить файл на чтение как раз таким образом (вместо file_exists, т.к. file_exists не означает что файл можно будет открыть).
    Или я могу захотеть проверить код возврата чтобы кинуть Exception, который будет отловлен на нужном уровне в моем коде.
    Или у меня хостинг клиентских файлов, и то что файл не существует, или к нему нет доступа меня не волнует, может быть это администратор специально забрал права или удалил файл; в коде есть проверка результата fopen и показывается стандартная заглушка клиенту.
    Короче говоря, отсутствие файла может быть вполне нормальной ситуацией, незачем об этом писать в логи.
  • Декораторы в PHP
    +2
    Вызов file_exists и fopen это две дисковых операции, когда можно обойтись одним fopen и принципом let it fail.
    Если я контролирую возвращаемое значение fopen мне абсолютно неинтересен этот warning, он будет только забивать логи.

    В питоне мы можем сделать try fopen except IOError, в php такой возможности нет, поэтому приходится подавлять ошибку и проверять код возврата.
  • Советы Google по кодированию на языке Python. Часть первая: советы по программированию
    0
    Нет, он использует AST для анализа.
  • Советы Google по кодированию на языке Python. Часть первая: советы по программированию
    0
    > Используйте PyChecker для проверки своего кода.
    PyChecker компилирует и выполняет код, на мой взгляд лучше pylint использовать.
  • Flickr дарит каждому пользователю по 1 терабайту для хранения фотографий и видео
    +1
    1. Можно, т.к. хранятся оригиналы.
    2. Да, оригинальные размеры есть.
    3. Подпапок нет, группировка происходит через сеты и коллекции сетов, хотя коллекции доступны только для pro-аккаунтов.

    По крайней мере так было до нововведений.
  • Мульти-хостинг django приложений с помощью nginx + uwsgi + virtualenv
    0
    Зря вы все из исходников компилите, как потом обновлять планируете? ручками?

    Ну, допустим мне надо сразу версию 2.6, 2.7 и 3.3 на одном сервере, насколько я понял проще это собрать из исходников чем поставить из репозиториев. Может я не прав.

    > apt-get install uwsgi-plugin-python3 uwsgi-plugin-python
    А если нужен плагин для 2.6, 2.7, и 3.3, как их поставить? Похоже, тут не обойтись двумя плагинами: projects.unbit.it/uwsgi/wiki/MultiPython

    Структура проектов годная, спасибо.
  • Мульти-хостинг django приложений с помощью nginx + uwsgi + virtualenv
    0
    Можно было иметь всего 1 экземпляр uwsgi а для python2/python3 просто разные виртуальные окружения и у приложений в конфигах прописать например «plugin = python3» а вообще какой питон в вирт окружении стоит такой и подхватится, так что не надо делать разные uwsgi.

    Согласен. Тут я просто смалодушничал, не получилось у меня собрать плагины для uwsgi (ошибки компиляции были), поэтому сделал как сделал. Собственно, в P.S. про это написал.
    Вот что получаю при попытке собрать плагин:
    Скрытый текст
    root@192756:~/uwsgi-1.9.10# /opt/python2.7/bin/python uwsgiconfig.py --plugin plugins/python/ core python27
    using profile: buildconf/core.ini
    detected include path: ['/usr/lib/gcc/x86_64-linux-gnu/4.6/include', '/usr/local/include', '/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed', '/usr/include/x86_64-linux-gnu', '/usr/include']
    *** uWSGI building and linking plugin plugins/python/ ***
    [gcc -pthread] /usr/lib/uwsgi/python27_plugin.so
    /usr/bin/ld: /opt/python2.7/lib/python2.7/config/libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC
    /opt/python2.7/lib/python2.7/config/libpython2.7.a: could not read symbols: Bad value
    collect2: ld returned 1 exit status
    *** unable to build python27 plugin ***
    

    Если знаете что с этим делать, буду признателен, мое гугл-фу меня подвело в этой ситуации.

    Вариант с конфигами в БД я рассматривал, но отказался: лишняя точка отказа получается: если какая-то беда с постгресом, то и хостинг не поднимется. (Представим что лежит pg и перезапускаем uwsgi). Файлики с конфигами надежнее, на мой взгляд + бекапировать проще, да и поправить если что конфиг руками проще, чем залезть в БД.

    Ну и странно что не воспользовались режимом Tyrant(emperor-tyrant)

    На сколько я понял, единственное отличие тиран-режима, что он сам проставляет приложению uid и gid, причем uid и gid будут владелец и группа конфигурационного файла. Если пользователи не имеют доступ к редактированию uwsgi-конфигов, то такой режим не обязателен.