• Как организовать генерацию уникального 5-тизначного номера заказа (только цифры) в ruby on rails?

    @Slko
    C++/C#/Python Developer
    На своём ресурсе мне приходилось реализовывать такое, но только чтобы результатом была последовательность символов, как у идентификатора видео на YouTube. И при этом чтобы из этой последовательности символов можно было получить исходное число. Для этих целей можно применять любой блочный шифр, который на выходе даёт последовательность с длиной, равной исходной. Я не знаю, есть ли шифры с 16-битным блоком, чтобы число было достаточно маленькими. В моём случае я применял свой велосипед на основе сети Фейстеля. Очень простая схема и для понимания, и для реализации.
    Ответ написан
    Комментировать
  • Javascript фильтрация повторных тегов

    @Slko
    C++/C#/Python Developer
    До̛͖̦̖̺̬͚͓̐͋ͭп̲͍͈о̳̘͉̤͑л̴͓̞̺̯̫͚ͣ̃̓ͮ̀̈́н̞͕̲̓͊ͬͬ̈́͟ю̽̇̓ͤͮͨ ̜̳͎͕̬̎̃о̢͌ͪ͛твет @mlnkv. Если использовать регулярку для парсинга HTML, то нужно будет настолько сильно п̵͍͉ͣ̓̓͛ͭ̈́͛͆о͓͎̠͉̜̎̽ͪ͞л͍̭̪̬͌̍ͧ̉̆̆͐͌͜о̶̪͓͕̲̮ͩ͛͌̍̽ͨ͝мͥͪͨ̌̄̀̕͏̠̳̬̖а͔̰͕̞̜͙̜̐ͨͭͣ̈̆͋̊̚т̷̬̩̻̗̬̫̲͍̓̿̏̐ь͉͇͊̌̂͋͌̓̾͛̚ ͉̹̣ͭ̑ͪ͜г̢̡͔͓͇̈͊о̵̛͇̱̤̤̥̰̓̃̃ͫͬл̸̢̭̦͍͚̯͈̗̺ͦͪ͂̏̽о͖͕̳̩͍͔̫̭̏ͭ̎̒̒͐̇̌́в̣̜͉̼̐ͪ̉ͬ̔ͮ̓̃у̴̛̞̹̹̿͑ͩ͜, ч̵̜̺͙͇̫͕̳̋́͋̃̅͂̔̀͠т̳̫̖̝͚͈̘ͬ͛ͤͥо̵̢̭̜̪̳̑͊ͭͭ̈ͥ ̭̣͙̂̍̑̊̉ͣп̻ͬ̇̀̾ͪ̌̉р̸̭̯͓̮͖͚͖ͯ̃и̳͇̹̝͈͊̌ͦ̏ͤ͡д̯̠͍̠͖̾ͬ̕ё̤͍͕͗̓ͧ̀̇̒̋ͭͅт̶͓͈̲̬̱̺͖ͧͤс̯͛ͪ́͘яͣͨͯ̍̒͒̑͡͏͎̭̪̬ ͓ͥ͛̄͗̇͟и̷ͪ͑҉̣͔͉̦̠̝̯з̟̰ͭ͐͛͛͂͞ͅм̦̜̯͈̤̝̗̞̏е̢̣͍͉͖̪͇̜̫̽̋͠н͇̯̝͊̍̇ͤͣͦ̇̆͟и̴̵͉́͑̇ͮ̍́т͎̖̳͕̣͎ͬ̆͋̈́͋ь̧̥̘̟͍̓ͫ͒̃͊͌̓ з̴̸̐̊̈͛͋ͭ̀̔́̀҉͓͚̲͖̙̥̦̥̙͙̱̟̮̣̦̫а̝̭͎͔̪̼̳̌̓͆ͣ̍͗ͩͯ͞͡к̸̹̭̫̳͚̰̭̪̤̬̼͉͔̮ͣ̋ͦͭ͠о̗̣̮͖̯̠̦͉̺͍͕͕̮̼͍͚̟̹̹͋̔͒͒̊͊̐̄̀ͬͮ͂́ͣ̂̀̌͆̕͞͞н̶̓̒̏̃̄̈́̓͗̆̌̽̈̆̒ͬ̕҉̙͇̲̝͓̼̦̭͓ы̡̦͎͚̣͔̤͉̞̂̄̉ͨͬ̔ͣͮ̕ ̸̬͕͖̰̘͍̗̰͍͕͎̝̹͈ͪ̽͑̆̈̿ͤ̐͟͠м͂ͯ͒̾̌̌̎ͦͯͮ̾̓ͬ́͝҉̸̵͚̫̜̳̙͈и̨̯̳̼̭͍̏ͫ̃̍̌̑ͣͤ̔̌̊͌̎̌ͣ̈̿̄̚͟р̸̹̙̦̖̪̯̪̙̠͕̹̗̞̬̝̬͔͗ͥ͊̊̒̽͠͝о̸̹̭̙͔̼͓͗ͩ̋͑͐͊͜͜з̡̧̠͚̰͙̯̖̹̣̄ͭ̏̉͑ͭ̾͆ͫ͐̍͂̎́̀̚͢͜д̸̠̞̦̞̮͍̭̹ͨ̐͊͆́ͮ͐̿́̓ͯ̓ͯͤа̡̮̘̹̲̮͍̩̼̀̾̈́́ͥ̕͟н̴̡͓̠̥̳̜̤̣̼̫̈́ͦ̑͑ͫͥ͛ͤͨ̐͋͋̅ͬ͊͡и̪̘̖͇̰̠͔̻̰̳̩̟ͧ̑͂̈́ͫͬ̉̏̾ͣ̃͌̔ͤͧ̽͗͋ͮ́̀я̶̳̦̺̫̾͗ͧ̃̾̓͊̎ͤ̊̒͝.̔ͤ̾̔͒ͩͦͧ́͑̈́̽͐ͭ͐ͩ̇͂̑҉̦̖̟̺͕̲͔͖͍͕̰̥̭͚̀͜͝
    Ḭ̢̝͙͕̱̰͋Ṯ̏̌͗̃̃ ͚̤̺̥̝̟̰̅̾̄̆̊͘C̳̲̩̖ͫ̓͆ͯ̍̚Ơ̗̰̦̦̫̲̫̿̋̇ͯM̞̀ͦ͜E̎̅͑ͦ̀̇̅͡S̡̠̤̝̥̼͛̉
    Ответ написан
    1 комментарий
  • Сложное задание на собеседовании

    @Slko
    C++/C#/Python Developer
    Вопрос немножко некорректен. 32-битность здесь большой роли не играет (важно только, чтобы архитектура не была 8-битной, где длина типа int может быть равна длине типа char, но всё равно это тоже некорректно, т.к. размеры типов не зависят от разрядности архитектуры, надо было указывать разрядность типа int), роль играет порядок байт.
    Если little-endian (интеловский порядок), то в c помещается наименьший значащий байт числа, т.е. это эквивалентно x % 256.
    Если big-endian, то в c помещается наибольший значащий байт числа, т.е. это эквивалентно x >> 24 (для 32-битной архитектуры).
    Соответственно, для little-endian эта операция над числом 1 вернёт 1, для big-endian - 0.
    Двойной знак вопроса использовался в C (где нет типа bool) для нормализации значения (!!x эквивалентно x > 0 ? 1 : 0).
    В C++ ! возвращает bool, а результат двойного применения отрицания это, по сути, преобразование типа исходного значения к bool (!!x эквивалентно (bool)x).
    В любом случае, суть последнего выражения - возврат true/1, если архитектура little-endian, а иначе - false/0.
    То есть назвать эту функцию можно было IsLittleEndian().
    Ответ написан
    6 комментариев
  • Какой выбрать фреймворк для высоконагруженного Python web-приложения?

    @Slko
    C++/C#/Python Developer
    Flask по тестам более производительный. Единственное, что очень сильно меня смутило - проблемы с доменами, если расположить Flask за nginx. Так и не разобрался, как объяснить ему, что он запущен по тому адресу, на котором запущен nginx. Он был убеждён, что запущен на localhost:81 и все редиректы шли туда.

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

    На Django даже не смотрел. Он там всё ещё не поддерживает Python 3.x? Не было желания его изучать хотя бы чтобы не поддерживать устаревшие технологии. Да и какой-то он мейнстримно-быдлокодерский.

    Но, наверное, Tornado и Flask подойдут скорее для небольших проектов. Или для больших, но с основательной проработкой архитектуры. Это неправильный выбор будет для быстрого клепания сайтов в какой-нибудь небольшой фирмочке.

    Раньше я тоже применял MongoDB, простота запросов и отсутствие необходимости описывать структуру данных очень привлекала. К тому же данные очень хорошо ложились в обычные питоновские типы. В конечном итоге перешёл на MySQL + SQLAlchemy. Отсутствие нормальных транзакций в MongoDB вызывало очень большие неудобства. Костыли, которые предлагались взамен, были слишком громоздкими и трудными для понимания.
    Ответ написан
    4 комментария
  • Как победить ошибку "You have an error in your SQL syntax" в MySQL?

    @Slko
    C++/C#/Python Developer
    Ответ написан
    Комментировать
  • OSM Bright Mac OS X (TileMill)

    @Slko
    C++/C#/Python Developer
    Выскажу самое глупое предположение - файл точно лежит в том месте, которое указано в команде? Заменили ~/Downloads/your_file.osm.pbf на свой путь?
    Ответ написан
  • Не получается достучатся к переменным xrez, yrez во вложенном if'е?

    @Slko
    C++/C#/Python Developer
    Если условия будут ложными, то переменные будут неинициализированными. Какое значение тогда должно попасть в XREZ и YREZ? Такие значения и надо записать в xrez и yrez во время их объявления, чтобы к моменту присваивания они такими и остались. Или присваивать их XREZ и YREZ только в условии. Это зависит от необходимой логики.
    Ответ написан
    2 комментария
  • Командный файл который определяет каталог на пустоту?

    @Slko
    C++/C#/Python Developer
    @echo off
    
    set dir=C:\aaa
    
    set result=folder is empty
    if exist "%dir%" for /f "usebackq" %%f in (`dir "%dir%\" /b /a:`) do set result=folder is not empty
    
    echo %result%


    Этот код устанавливает переменную result в значение "folder is empty". После этого с помощью for проходится по каждому файлу в папке и выполняет в этом цикле установку значения переменной result в "folder is not empty". Соответственно, если папка пуста, то команда установки значения переменной не выполнится ни разу и значение в ней останется исходным.
    Ответ написан
  • Ошибка в MySQL и PHP

    @Slko
    C++/C#/Python Developer
    Данный код - идеальный пример, в котором можно эксплуатировать SQL-инъекцию. Используйте параметризированные запросы или экранируйте входные данные.
    А если отвечать конкретно на этот вопрос, то в GET['name'], я полагаю, передаётся helloworld без кавычек и выходит такой SQL-запрос:
    SELECT * FROM news WHERE link = helloworld
    Соответственно, надо добавлять кавычки вокруг "helloworld", потому что без кавычек это интерпретируется как идентификатор столбца, а не как строка.
    Ответ написан
    Комментировать