• Почему не находит страницу?

    sim3x
    @sim3x
    изучите пеп8 - там четко указано как нужно именовать функции

    #
        url(r'^$', views.BookList, name='BookList'),
        url(r'^category/(?P<category_slug>[-\w]+)/$', views.BookList, name='BookListByCategory'),
        url(r'^book/(?P<id>\d+)/(?P<slug>[-\w]+)/$', views.BookDetail, name='BookDetail'),
        url(r'^contacts/$', views.ContactsPage, name='ContactsPage'),
    Ответ написан
    Комментировать
  • Какие алгоритмы нужно знать веб разработчику?

    @mletov
    Зависит от того, что собираетесь программировать. В большинстве случаев, как написали выше, - никакие, но...
    Работал в одной конторе, встала хитрая задача найти оптимальные сочетания, что-то вроде комбинаторики, из нас троих ни один ее не решил, знаний матчасти не хватило, в итоге, в лоб тупо перебором подгоняли.

    Тут гораздо важнеее не web/mobile/desktop, а предметная область.
    Ответ написан
    Комментировать
  • Какие алгоритмы нужно знать веб разработчику?

    @unabl4
    ruby on rails web dev
    Фактически никакие. Больше упор лучше делать на структуры данных, паттерны, архитектуры, инфраструктуры и т.д и т.п
    Ответ написан
    2 комментария
  • Какие алгоритмы нужно знать веб разработчику?

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

    В веб-разработке важно чтобы запрос к серверу занял как можно меньше времени. Для этого нужно быстро обратиться к БД, что-то посчитать и вернуть ответ. Пользователь не любит ждать. Порой нужно использовать техники кеширования данных и некоторые другие оптимизации.
    По-моему, основными факторами задержки являются:
    1. неоптимальные запросы к БД
    2. неоптимальный выбор структур данных и, как следствие, понижение скорости работы и повышенные требования к памяти
    3. повторяющиеся операции в коде
    4. блокирующие операции в коде
    5. неоптимальная отдача статического контента сервером
    Ответ написан
    Комментировать
  • Путь становления Реверс инженера?

    TrueBers
    @TrueBers
    Гуглю за еду
    Рецепт прост до безобразия:
    Если вам хочется разбираться в каждой фиче, каждую новую программку ковырять, разбирать формат её файлов, каждую новую игру пытаться взломать, написать для неё бота, чит и т. п. Значит это ваше, просто продолжайте делать то, что делаете.

    Если нет, то никакие книги не помогут. В этом деле нужна страсть и огромное терпение.

    Матан никому не нужен в реверсе. Максимум решение систем линейных уравнений понадобится.
    Важно скорее нестандартное мышление, умение брутфорсить в голове множество вариантов, подходов. Для этого нужно знать технологии. Т. е. буквально, знать нужно как можно больше. Чем больше вы знаете, тем быстрее будет решена задача. Это абсолютно различные области: ОС, сети, способы шифрования, компрессии, хеширования, сериализации; знание баз данных и их языков запросов; знание компиляторов в плане, как они генерируют код; знание реализации той же стандартной библиотеки, понимание как компилируется один и тот же код разными компиляторами, понимать, как работают интерпретаторы байткода, виртуальные машины, и т. п.

    Это, что касается общих технологий. А есть ещё такая штука, как архитектурные паттерны. Они обычно применяются в прикладных приложениях, малварь редко такое применяет. Т. е. нужно видеть в коде, например, паттерн Event, различные варианты паттерна MVC, и т. п. Например, вы реверсите продукт на Qt. Чтобы его понимать, вам нужно знать... Qt, и уметь на нём разрабатывать, читать его исходный код, знать что такое метаобъекты, как они хранятся, используются, вызываются. А если, внезапно, оно юзает что-то интерпретируемое, типа питона или луа, то вам, мало того, что нужно знать сами языки, так ещё и реализацию их интерпретаторов. А ещё бывает JIT...

    Нужно ещё решить, что вы хотите реверсить. Малварь и прикладные приложения немного расходятся. В малвари нужно больше знать нестандартных вещей. Различных вариантов антиотладки, скрытия активности, багов операционной системы, поведения антивирусов. Малварь может быть ботнетом, например. Ботнеты обычно имеют командный сервер, который довольно трудно вычислить, он меняется динамически, как-то не даёт себя обнаружить. Для этого нужно знать как устроен интернет, как работает dns, разбираться в сетевых протоколах.

    Короче, для реверсера нужно учить всё. Не нужно фильровать определённые технологии, вам понадобятся все они без исключения. Ибо всё, что было создано для вычислительных систем, в них используется, а соответственно, вам придётся это знать, чтобы реверсить.

    Кстати, чуть не забыл.

    Самая лучшая книга по реверсу на русском.

    И ещё есть классический курс статей от Рикардо Нарвахи: «Введение в крэкинг с нуля, используя OllyDbg». Погуглите его. Если осилите книгу Юричева и этот курс, то сможете спокойно собеседоваться в Касперский. Хотя, поверьте, есть вещи поинтереснее касперского.
    Ответ написан
    1 комментарий
  • Почему нельзя использовать указатель без объявления переменной?

    TrueBers
    @TrueBers
    Гуглю за еду
    А потому что, учите ассемблер, вот почему.
    Разработчика на C/C++ не бывает без базовых знаний ассемблера.
    Можно взглянуть сюда и понять очень многое.

    На 6-й строке ассемблерного кода у вас происходит выделение стекового фрейма. Это та область памяти, где будут храниться ваши локальные переменные, которые вы объявляете в текущей функции, т. е. в нашем случае это int var; int *pvar;. Несмотря на то, что сумма размеров этих переменных на стеке sizeof(int) + sizeof(int*) = 12 для x86_64, выделяется 16 байт согласно пункту 3.2.2 SystemV ABI AMD64, который говорит, что стековый фрейм должен быть выровнен по границе 16 байт. На другой архитектуре здесь может быть другое правило.

    Стек растёт вниз по адресам, т. е. выделение памяти на нём — это просто вычитание (инструкция SUB) из адреса его вершины (регистр RSP) числа, равного тому количеству памяти, которое мы хотим выделить. К вам как бы «всплывает» кусок памяти «откуда-то снизу». Эта память скорее всего использовалась предыдущими вызовами функций и осталась не затёрта! Соответственно, вы должны инициализировать этот поюзаный кем-то кусок под себя.
    Что-то типа аналогии со школы или универа, когда в аудитории есть такая раздвигающаяся доска из двух или трёх частей, видели наверное, когда выдвигаешь одну часть, а другая задвигается. Так вот, когда вы приходите на лекцию, выдвигаете доску, а там, внезапно, предыдущая группа не стёрла за собой свои творения, и вам придётся это стирать и писать вещи, относящиеся к вашему предмету. Естественно, если вы попытаетесь использовать для вашего предмета то, что осталось от предыдущей группы, получится бред в большинстве случаев.

    Когда адрес вашего указателя где-то используется без инициализации (7-я строка асм кода), он возьмёт тот самый мусор, который к нам пришёл при выделении фрейма.
    Получается лотерея: если этот мусор случайно оказывается действующим указателем на память, доступную для записи, ОС не выбрасывает исключение и пишет куда-то в непонятное место, ломая тем самым случайное место в вашей программе. Т. е. вы попадаете на тот случай, когда во фрейме попался до сих пор действующий указатель из мусора предыдущей функции, которая использовала этот кусок фрейма и не затёрла. А когда лотерея проиграна, и попали не на указатель, а на не пойми что, ОС бросает исключение. Поэтому ошибка не всегда проявляется.

    Это всё частный случай реализации языка Си для конкретной архитектуры. Конечно, в терминах стандарта таких вещей не бывает вообще, а объявлено просто как неопределённое поведение, которого нужно избегать.
    Ответ написан
    1 комментарий
  • 1С программист. Начало карьеры. Как эффективно обучаться?

    tema_sun
    @tema_sun
    Нравится вам 1С так и хорошо, занимайтесь им. Я думаю в России этот продукт будет популярен еще долго.Только учтите, что это не избавит вас от вопроса "что даст мне моя текущая профессия через 3-5 лет".
    А вообще, лучшее, что вы можете сделать - перестать задавать этот вопрос в принципе. Он только тревожность поднимает и ничего не дает взамен.

    Половина аудитории, что-то активно решали с осознанием дела. Что никак нельзя отнести ко мне.

    Перестаньте сравнивать себя с другими. Всегда есть кто-то лучше. Не смогли освоить материал сразу? Пробуйте еще. Может эта половина аудитории там пятый раз сидит, и поэтому что-то решает.
    Ответ написан
    Комментировать
  • Что выбрать сервер или обычный системный блок?

    @ralaton121
    По производительности серверное оборудование (за те же деньги) - существенно хуже, ниже.
    Но надежнее.

    Хотя для ваших целей хватит и i5, ни на какой i7 денег тратить не нужно.

    Скажите, вашу организацию не смущает, что для AD и пр да еще на 100 штук нужно ПОКУПАТЬ лицензии?
    На сервер и на рабочие места.

    Ставьте NAS4Free - это такой специальный дистрибутив с веб-управлением.
    Там и AD через Samba и файловый сервер и много много еще чего. И сервер можно взвести штатно через веб-панель.
    Если вам нужны все фенечки - типа дедупликации файлов и т.п., то нужно оперативки хотя бы 4, лучше 8 Г. Но и 2 Г вполне потянет.
    Процессор же можно старый древний i3 первых поколений.

    Смешивать файрвол и сервер хранения данных - не стоит.

    Вместо Kerio (который, кстати, тоже платный) - я бы поставил pfSense - также специализированный дистрибутив с веб-управлением.
    Железа достаточно слабого, давшнишнего, на котором даже пользователям работать некомфортно - этому серверу хватит
    Ответ написан
    Комментировать
  • Программирование на C# в Linux?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Будут ли работать и работать корректно IDE (полноценные версии) Visual Studio
    Visual Studio - очень вряд ли, а вот C#-программы созданные в Visual Studio под линуксом запустить можно, с помощью Mono. Года примерно 2-3 назад я так и пытался делать, откровенно говоря, работа с программой собранной в VisualStudio (под виндой) и запущенной под Mono'й в линуксе, чем-то напоминало тестирование альфа-версии windows. Но сам факт, того, что оно запускалось и работало - на лицо. Не знаю, может быть сейчас что-то изменилось к лучшему.

    Вместо VisualStudio, разработчики Mono предлагают Вам использовать MonoDevelop. На мой взгляд, сравнивать их не очень разумно, но последний тоже имеет полное право на жизнь.

    Но вот вопрос, как обстоят дела с программированием на выше перечисленных языках в этой ОС?
    Со всеми остальными языками, кроме C# - дела обстоят на мой взгляд, отлично. Хотя, говоря про C# - я имею в виду полноценную .NET-платформу, с винФормами, WPF и всей прочей дребеденью, к которой Вы возможно уже привыкли работая в VisualStudio/Windows.

    PyCharm, SmartGit и другие проги
    PyCharm - думаю да, это же от JetBrains штуковина? Все известные мне IDE их производства одинаково хорошо работаю и в Linux и в не Linux :))

    Других "прог" там тоже хватает, думаю, касательно программ для работы с Git'ом - у Вас проблем не возникнет.

    Какие особенности, чего ждать, к чему готовиться, стоит ли вообще.
    Особенности - это кардинально другая ОС, со всеми вытекающими. Другие оболочки рабочего стола, другой внешний вид, другие... "другие" примерно всё, что Вы можете придумать. От принципов разработки ОС до всего остального. Хотя нет, некоторые сходства есть в целом. В линуксе так же есть рабочий стол, нечто напоминающее по смысл кнопку "Пуск", курсор мыши и некоторые другие случайные совпадения с другими ОС.

    Стоит ли? - ответ на этот вопрос каждый выбирает для себя сам, лично. Я для себя давно решил, что стоит, чему и рад вполне. Долго сопротивлялся и упрямился линуксу "на рабочем столе", хотя и был довольно большой опыт работы с оным и с FreeBSD ещё с лохматых времен, кода актуальными были FreeBSD-4 и Debian-3. Сейчас Windows стоит на "запасном" диске, т.к. меня там всё ещё держат несколько программ, в т.ч. для обработки звука и фотошопы последних версий. Если бы не это - давно бы сидел в никсах и жил бы спокойно и счастливо.
    Ответ написан
    2 комментария
  • Почему страница помнит ранее созданный Singleton при генерации отчетов (npoi)?

    В моем понимании, если я перегружаю страницу, да еще и с другими GET параметрами, все экземпляры классов должны создаваться заново, откуда старый экземпляр?

    Singleton существует на уровне приложения, а не на уровне запроса одного пользователя.
    Ответ написан
    Комментировать
  • Почему не перезапускается Puma (Rails)?

    c3gdlk
    @c3gdlk
    Ментор в http://rubyboost.ru/
    У Вас не убивается пума, поэтому и не стартует новый инстанс сервера

    Решения Вашей проблемы 3
    1 Очень простой, но может и не получиться. Поиграть с версиями капистрано и пумы., может какае-то связка и заработает
    2 Ковырнуть исходники, посмотреть какие команды выполняются на restart и почему текущий сервер не убивается
    3 Использовать какую-либо тулзу для мониторинга сервера. Она же будет его перезапускать и будет делать это правильно. Простой вариант - гем https://github.com/ddollar/foreman, получше (но сложнее) -тулза https://mmonit.com/monit/
    Ответ написан
    Комментировать
  • А какой есть аналог Spring webflow в Django?

    sim3x
    @sim3x
    https://github.com/viewflow/viewflow

    Для нескольких форм проще сделать сохранение в сессию пользователя
    Ответ написан
    1 комментарий
  • Как сделать отзывы с верификацией на email?

    petermzg
    @petermzg
    Самый лучший программист
    1. Добавьте в модель Review поле Verificated, которое изначально будет проставляться в False.
    2. Отправьте письмо с ID созданной записи, и чтобы не подделали, для примера, добавьте md5 от полей Review
    3. Когда пользователь перешел по ссылке, сверяете ID и MD5 для него.
    4. Если все хорошо, то меняете значение поля Verificated на True
    5. Показываете страницу "Отзыв опубликован"
    Ответ написан
    2 комментария
  • Разработка web-сервисов – LAMP (Python/Django) vs. MEAN (Node.js)? Или что-то другое?

    un1t
    @un1t
    Выбор ЯП и стека вещь сугубо субьективная. Параметров слишком много, чтобы можно было объективно сравнить.
    Все перечисленные технологии популярны и в ближайшиее 5 лет будут востребованы. Выбирай то что нравится.

    В пользу Node: всё идет к тому, что js станет стандартом как на фронте, так и на сервере. Через 5 лет серверную часть не на js будут писать только ленивые ретрограды.

    Ну-ну. Или стухнет как руби.

    Приложения получаются быстрее python и др. в 10-15 раз, выдерживают большие нагрузки,

    У JS нет превосходства в производительности над Python. Скорее наоборот. Но в целом я бы не рассматривал производительность как фактор выбора, т.к. в первом приближеннии она одинакова.

    нет задач, которые нельзя было бы реализовать в рамках MEAN-стека.

    Можно так и про ассемблер сказать, но это не делает его удобным для веб разработки.

    Технология в стадии активного развития, через 5 лет сегодняшние её косяки будут исправлены, и она станет стандартом де-факто для web-приложений, как php для web-сайтов когда-то. Нет смысла тратить время и распыляться на морально устаревающие средства.

    Некоторые косяки действительно будут исправлены. С монгой все поигрались и забыли, вернулись к реляционным БД. Express.js это наколенная поделка, которую можно написать за один вечер. Там по сути кроме роутинга ничего нет. Может быть черзе 5 лет на ноде появятся какие-то полноценные фреймворки типа Джанги, Рельсов или Симфони, но на сегодняшний день их нет. Angular это вообще фронтенд, его можно с любым бакендом использовать.

    На мой вкус Python имеет преимущество, как более приятный язык программирования с более широкой областью применения. Также Python является стандартом в популярной сейчас области анализа данных и машинного обучения. В Python можно писать синхронный код, так и асинхронный и это поддерживается на уровне языка.
    Ответ написан
    Комментировать
  • Разработка web-сервисов – LAMP (Python/Django) vs. MEAN (Node.js)? Или что-то другое?

    1) Мой основной язык Python, на JS больших программ почти не писал. Когда писал на нём больше, то ощущал дискомфорт из-за:
    - отсутствия нормального наследования (хотя сейчас, вероятно, это уже исправлено)
    - трудностей с типами данных и неявными преобразованиями (вот вчера буквально был холивар на Тостере о == и ===)
    - списков, реализованных как переодетые объекты
    - отсутствия из коробки структур данных вроде deque.

    Но это были студенческие поделки.

    2) Python предоставляет больше средств борьбы со сложностью. Наследование, система метаклассов, синтаксический сахар. Хотя бы даже такая штука как property. Он даёт больше возможности инкапсулировать сложность внутри. Ну и на нём действительно очень много разнообразных библиотек. Возьмите хотя бы Django: она умеет автоматически генерировать миграции базы данных. Насколько я знаю, это мало кто умеет делать.

    3) Не думаю, что JS - это язык будущего для бэк-енда. Я бы согласился, если бы вы сказали про Scala или Kotlin, которые куда больше подходят для больших и сложных приложений хотя бы потому, что имеют ещё больше средств борьбы со сложностью, чем Python. Поэтому я смотрю скорее в их сторону для своего будущего профессионального развития, не на JS. Он как-то не очень тянет в сравнении.

    4) Ничто не помешает вам изучить платформу А, затем Б, потом В и так далее; от этого только польза. Может быть, вы через десять лет будете на Quipper - диалекте Haskell для квантовых компьютеров - писать. Но начинать посоветую всё же с Python - чтоб меньше заниматься мазохизмом и больше писать кода.)
    Ответ написан
    2 комментария
  • Чем открыть exe файл для редактирования?

    15432
    @15432
    Системный программист ^_^
    Если вы ожидали найти там исходники, такого не будет. .exe содержит скомпилированный код и ресурсы типа иконок, библиотек, диалогов. Если ресурсы относительно несложно поменять через всякие Resource Editor, то чтоб модифицировать .exe файл, нужно его дизассемблировать, понять устройство ассемблерного кода и внести изменения вручную, это далеко не так просто. Например, этим занимаются при взломе программ - кейгены, патчи, кряки.

    Ответ на ваш вопрос будет таков:
    Просто "открыть" можно через 7-zip
    Незащищенные .exe дизассемблируются через IDA Pro
    Запакованные или защищенные .exe нужно предварительно распаковать (в самом тупом случае - через UPX, в сложных - дизасмить распаковщик и динамически отлаживать)
    Ответ написан
    1 комментарий
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    До 35 получал массу предложений от российских компаний, как исполнилось 35 -- поток моментально практически иссяк (с нескольких штук в неделю до одного в месяц). К счастью, к этому моменту я уже был готов работать за рубежом, где никаких проблем с трудоустройством не испытал.
    Ответ написан
    3 комментария
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    1. Да, берут более молодых. Но почему?
    По большей части у них есть больше энергии и сил.
    Если возникает необходимость что-то сделать грандиозное: перейти на новый фрейморк, сидеть до поздна несолько дней лишь выдать продукт с правкой багов и др. То у молодых больше энергии

    2. Но также берут и по-старше.
    Но все люди разные. Кто-то уже "устал" и вообще ничего не хочет делать. А-ля "перегорел". А кто-то придет и запустив WinDbg напишет на коленке скрипт для pykd и найдет кучу уязвимостью. Потом их опишет и скажет "У Вас ребята руки из жопы. Так писать нельзя" и покажет как надо! Вот в таких случаях работодателю страшно уже по-другому поводу "А не слишком ли опытный? Ведь ЗП по-больше будет просить!" ;)
    Ответ написан
    9 комментариев
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    fedorez
    @fedorez
    Хатуль мадан
    Елки зеленые. Раз в пару месяцев появляется тема, собирает массу ответов, висит в топе несколько дней и так до следующего раза))
    Ну гляньте поиском...
    Кратко - да, проблема есть. Но если ты не тупой, не размяк мозгом и профпригоден, живёшь в городе где фирм больше трёх, то кадровый голод в индустрии позволяет класть на неё большой болт. Ну не возьмут вас в пару мест из-за этого. Будет у вас пара отказов из пяти таковых по этой причине. Ну придёте туда где нет таких загибов, и всё.
    А лучше быть хорошим специалистом в востребованной области, знать английский - пофиг вам будет на эти местечковые комплексы.
    Как-то так.
    Ответ написан
    1 комментарий