• CTF. Как и где подгоьовиться?

    barmaley_exe
    @barmaley_exe
    Я уже отошёл от этих дел, поэтому мой ответ неполон и не совсем актуален, но все же.

    У нас было так: есть студенческий семинар, где члены команды рассказывают о всяких infosec штучках вроде криптографии, web безопасности, реверсинга и т.п. Так же команда регулярно участвует во всяких соревнованиях после которых (не сразу, а через пару дней) проводится разбор, где рассказывается, как решалось то или иное задание. Полезно почитать write-up'ы (зачастую ссылки на них можно найти на ctftime).

    А ещё есть Летняя школа «Развитие CTF в России», но я там ни разу не был, поэтому ничего сказать не могу.
    Ответ написан
    Комментировать
  • Компьютерная Безопасность или КН -на что стоит идти?

    barmaley_exe
    @barmaley_exe
    Не знаю, чему учат на КБ, но в УрФУ есть Хакердом, где можно узнать всё самое важное, связанное с информационной безопасностью.

    А вообще, спрашивайте у студентов самого вуза, тут спрашивать бесполезно.
    Ответ написан
    Комментировать
  • Как правильно задать обучающую выборку для нейронной сети?

    barmaley_exe
    @barmaley_exe
    Признаки (фичи) данных нужно представлять правильно. Математика сетей такова, что если Вы представляете признак числом, то наблюдения со значениями признака 5 и 4 будут "ближе", чем, например, 5 и 100. Но если признак — это идентификатор группы (т.н. категориальный признак) пользователя, то их числовая близость ничего не значит.

    Аналогично с выходом. Если предсказывать одно число, то это эквивалентно предположению, что предсказать 21 вместо 20 не так страшно, как выдать 1000. Опять же, для категориальных признаков это неправда.

    Итого, если вход состоит из 20 категориальных признаков, то каждый признак нужно заменить на множество новых, получаемых one-hot-кодированием (так же известным как dummy variables): для каждого значения такого признака создаётся новый признак-индикатор, равный 1 только если соответствующий признак данного наблюдения равен соответствующему значению.

    Аналогично с выходом.
    Ответ написан
    Комментировать
  • Почему появляется пустое пространство?

    barmaley_exe
    @barmaley_exe
    Это всё ваш clearfix, который .item:after

    Можно использовать другой: https://jsfiddle.net/nhp9cgg7/
    Ответ написан
    Комментировать
  • Как разделить "пик" функции на два простых пика?

    barmaley_exe
    @barmaley_exe
    Если Вы верите, что наблюдения являются суперпозицией двух парабол, т.е. имеют зависимость y = f(g(x)), где g и h — полиномы второй степени, то можно выписать уравнение для y, которое будет зависеть от 6 параметров (по 3 на каждую параболу). Пусть это будет зависимость вида y = F(x; a,b,c,d,e,f) где F(x) = h(g(x)) — полином, соответствующий суперпозиции парабол, а a...f — коэффициенты этих парабол.

    Запишем теперь систему уравнений:
    Для каждой точки подставим её x в F, оставив все остальные переменные переменными. Получим N полиномов (по числу точек-наблюдений) нескольких переменных, зависящих от параметров a...f. Для каждого такого полинома мы знаем, что если подставить правильные a...f, то мы получим y этой точки. Т.е. каждой точке (xk, yk) соответствует уравнение F(xk; a,b,c,d,e,f) = yk. Решить это уравнение можно методом Ньютона, например.

    P.S. Решаемая система не будет линейной.
    Ответ написан
  • Какую выбрать тему для НПК, где используются нейронные сети?

    barmaley_exe
    @barmaley_exe
    Что вы понимаете под "обучающуюся играть в шахматы"? С нуля, не зная правил, имея лишь доску перед собой, как в эксперименте с играми Atari? Это вряд ли.

    А вот оценивать позиции с помощью нейросетей можно.
    Ответ написан
    Комментировать
  • Существует ли язык программирования для юристов?

    barmaley_exe
    @barmaley_exe
    Я думаю. что проблема тут в необъятности предметной базы. То есть, юристы оперируют большим количеством высокоуровневых (т.е. у каждого человека есть какое-то представление о том, что данное слово значит в контексте, но строго определения нет) понятий естественного языка ("лицо", "действие", "предумышленно", etc), порой весьма причудно взаимодействующих, что затрудняет строгую формализацию.

    С другой стороны, было бы очень интересно посмотреть на попытки приблизиться к решению этой проблемы. Законы, действующие в соответствие с формальной логикой, – это же круто!
    Ответ написан
    2 комментария
  • Куда пойти учиться?

    barmaley_exe
    @barmaley_exe
    СПбАУ, СПбГУ, ИТМО.

    Идти надо туда, где много прикладной математики (алгебра, мат. анализ, дискретная математика, теория вероятностей и мат. статистика, теория оптимизации и пр.) и компьютерных наук (алгоритмы, мат. логика, etc)
    Ответ написан
    1 комментарий
  • Что делает ":"?

    barmaley_exe
    @barmaley_exe
    Это for-each цикл. Создан для итерации по контейнерам, чтобы с итераторами не возиться.
    Ответ написан
    Комментировать
  • Как найти студенту работу на лето за границей?

    barmaley_exe
    @barmaley_exe
    Не слушайте kazmiruk, он не в теме.

    В Штатах существует J1 виза, специально предназначенная для "обмена опытом" и не являющаяся dual-intent, т.е. подразумевается, что после некоторого срока Вы США покинете и у Вас даже в мыслях нет остаться там (иначе визу могут не дать).

    Многие Все приличные IT-компании организуют стажировки для студентов, привозя их на пару месяцев летом по этой самой J1 визе. И да, они заморачиваются не только с визами, но и с жильём, перелётом и прочим. Да и платят прилично. Разумеется, желающих постажироваться в том же Гугле гораздо больше, чем они способны нанять (хотя, я уверен, за лето через них проходит не одна сотня студентов) – тут нужно хорошо себя проявить на собеседовании, да и компания может постесняться Вашего статуса младшекурсника. Тем не менее, это реально, на Хабре Мегамозге (?) есть истории успеха.

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

    P.S. Штатами всё не ограничивается, тот же Гугл, например, возит стажёров и в Европу, и, скажем, Японию.
    Ответ написан
    Комментировать
  • Python subprocess - как сделать интерактивный вывод и ввод данных с консоли?

    barmaley_exe
    @barmaley_exe
    Команды открытия подпрограмм модуля subprocess имеют параметры stdin, stdout, stderr, которые могут принимать значение PIPE.

    Это приведёт к созданию PIPE, из которого / в который можно читать / писать.
    Ответ написан
    Комментировать
  • Что такое олимпиадное программирование?

    barmaley_exe
    @barmaley_exe
    Олимпиадное и спортивное программирование действительно два имени одной сущности.

    Обычное (промышленное) программирование нацелено на решение бизнес задач с использованием компьютеров. Такие задачи, как правило, характеризуются следующим:

    • большой фронт работ (т.е. разрабатывается не в одиночку, а большой командой)
    • имеют большой цикл поддержки (т.е. программа, написанная Вами сегодня наверняка пригодится через полгода-год),
    • должны быть эффективны с точки зрения бизнеса (иногда алгоритмическая эффективность влечёт усложнение решения, что приводит к увеличению издержек. Далеко не всегда повышение алгоритмической эффективности приводит к ощутимому бизнес профиту)


    Даже если вы не продаёте программный продукт, а, например, пишете opensource программу или библиотеку, Вас всё равно интересует бизнес-эффективность: хотелось бы иметь простой и надёжный код (чем алгоритм сложнее — тем проще допустить ошибку), возможность расширения и изменения программы спустя некоторое время (т.е. думать об архитектуре).

    Спортивное программирование, в свою очередь, сосредоточено лишь на решении формальных задач с максимальной эффективностью в плане времени исполнения и объёма затрачиваемой памяти. Самым эффективным способом практики этого вида программирования являются соревнования, проводимые, например на codeforces или topcoder. Такие соревнования длятся несколько часов и предлагают несколько задач различной сложности. Чем быстрее и больше участник решил — тем больше он молодец.

    Таким образом
    • программы оказываются очень небольшие по размеру — не более пары сотен строчек
    • срок жизни такой программы составляет, как максимум, несколько часов, поэтому написать её можно как угодно, лишь бы работала.

      Например, однобуквенные переменные пишутся гораздо быстрее длинных и осмысленных, однако их предназначение понятно лишь самому автору и лишь в течение крайне небольшого срока после написания программы.
    • поскольку программа невелика, нет необходимости в разбиении её между несколькими программистами
    Ответ написан
    Комментировать
  • Что должен знать профессиональный программист без учета особенностей конкретных языков программирования?

    barmaley_exe
    @barmaley_exe
    Сильно зависит от области работы. Во многих областях будут полезны ещё и эти навыки:

    7. Сети
    8. Параллельное программирование
    9. Устройство операционных систем
    Ответ написан
    Комментировать
  • Как использовать mv?

    barmaley_exe
    @barmaley_exe
    mv * ..
    Здесь * — маска для выбора всех файлов, а .. — обозначение родительской директории.
    Разумеется, команду надо запускать из той папки, содержимое которой Вы хотите перенести.

    Ваша ошибка заключается в том, что Вы перемещаете папку httpdocs в /home/devi/www/site/, но она уже там.
    Ответ написан
    2 комментария
  • Какие есть алгоритмы для выдачи результата из заданого списка с определенной вероятностью?

    barmaley_exe
    @barmaley_exe
    Метод Уолкера (см. тут, снизу). Хорош тем, что после линейного предподсчёта можно отвечать на запрос за O(1).
    Ответ написан
    Комментировать
  • Что будет с методом Ньютона, если не использовать обратную матрицу?

    barmaley_exe
    @barmaley_exe
    Если под "не использовать обратную матрицу" имеется в виду "двигаться в направлении (анти)градиента", то получается градиентный спуск (либо его частный случай для единиченого шага).
    Ответ написан
    Комментировать
  • Прикладная математика как второе высшее для программиста?

    barmaley_exe
    @barmaley_exe
    При желании всё можно и самостоятельно освоить (учебников, лекций, курсов и ресурсов в сети навалом). Что касается взаимодействия с преподавателем, у которого якобы можно спросить что-нибудь, то с этим в интернете уж тем более нет никаких проблем, есть же math.stackexchange.com, например. Однако, этот путь прост лишь на словах, на практике требуется недюжая организованность и самоконтроль. Тем не менее, это возможно.

    А теперь об очном обучении в вузе (о заочном ничего не знаю)

    Если есть желание и возможность, то почему бы и нет? Некоторые разделы математики вроде дискретной математики, линейной алгебры, теории вероятности и статистики довольно полезны программисту. Особенно, в области анализа данных, например.
    С другой стороны, далеко не вся математика будет полезной. Конкретные разделы не приведу, поскольку это зависит от того, чем Вы в итоге будете заниматься. Однако, маловероятно, что все изучаемые дисциплины будут одинаково полезны. Отсюда ощущение, что математики изучено гораздо больше, чем нужно, что отчасти правда — чтобы хорошо закрепить базу нужно не только нарешать задачек, но и понять, как она взаимодействует с другими областями.

    Если интересно применение математики к программированию, то советую ориентироваться на программы, явно упоминающие информатику / computer science. Конечно, любая прикладная математика в настоящее время делается с применением компьютеров, но где-то это лишь инструмент для обсчёта, допустим, сложного дифференциального уравнения, а где-то математика, наоборот, является инструментом для решения программистской задачи (рекомендации в онлайн магазине, например).

    Ну и, вообще говоря, многое зависит от вуза. Идти в первый попавшийся я бы не советовал, а приличных мало, большинство их в Москве / Питере.

    Возьмут ли, если ты только специалист, да еще и отчислялся?
    А какие могут быть проблемы? Насколько я знаю, в России только одно ВО оплачивается государством, т.е. придётся выложить денег за обучение. Ну а коль уж Вы платите, то оснований не взять Вас я не вижу :-)

    А ещё тут есть такая лазейка: Российская система высшего образования сейчас потихоньку переходит на болонскую систему образования, выражающуюся в 4 годах бакалавриата + 2 года магистратуры. Насколько я знаю, специалисты прошлых годов выпуска имеют право на поступление в магистратуру на бюджетной основе. Кажется, такая схема даже лучше: 4 года — довольно значительное вложение времени, а 2 — уже реальнее.

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

    barmaley_exe
    @barmaley_exe
    Никакие.

    Один лишь ЯП в вакууме с точки зрения применения в конечном продукте абсолютно бесполезен. Ибо, как правило, программный продукт существует не обособленно, а, так или иначе, взаимодействует с другими программами (операционной системой, например). Более того, зачастую разумно не изобретать велосипед, а воспользоваться уже готовым решением, которое было проверено временем. Таким образом, приходится знакомиться с кучей уже существующих технологий.

    Вообще, в области server / desktop / mobile очень сложно уйти далеко без, как минимум, следующего:
    • Объектно-ориентированное программирование и проектирование — ведь код не должен быть говном
    • Параллельное программирование — ведь делать нужно много и быстро, а у нас уже 10 лет как многоядерные машины есть
    • Сети — ведь нельзя жить без интернета
    • Базы данных — ведь данные надо где-то хранить, и хранить надёжно


    hardware не комментирую, но там ещё хардкорнее.

    Собственно, для программиста не столько важно знать какой-либо конкретный ЯП, а важно владеть технологиями разработки. ЯП, конечно, входит в это множество, но им оно совсем не ограничивается.
    Ответ написан
    3 комментария
  • Каков необходимый минимум знаний для junior'а/стажера (с++) и где найти работу студенту?

    barmaley_exe
    @barmaley_exe
    EMC интересуется программистами с мат-меха. И позиции C++ стажёров у них бывают.

    Знать надо алгоритмы
    • Структуры данных: сбалансированные (и не только) деревья, хеш-таблицы, очереди с приоритетами и без, списки. Знать, конечно, не в теории, а уметь работать с ними
    • Графы: как минимум обходы в ширину и глубину. А так — поиск путей, минимальные остовные деревья,
    • Сортировки: quicksort, heapsort, mergesort, а так же какие-нибудь линейные вроде сортировки подсчётом и цифровой сортировки
    • Чем больше — тем лучше


    Для всех алгоритмов нужно знать и уметь обосновать их сложность (как по времени, так и по памяти) в терминах O-большого.

    C++, разумеется, предполагается знать прилично:
    • владение стандартной библиотекой (не будете же Вы raw pointer'ы в продуктовом коде использовать)
    • ООП
    • шаблонами
    • идиомами (RAII, pimpl, etc) в довесок к паттернам проектирования
    • Плюсом будет опыт работы с boost'ом.

    Помимо этого надо иметь представление о сетях и многопоточном программировании, а ещё уметь организовать процесс разработки, т.е. пользоваться системой контроля версий (SVN, GIT, Mercurial), инструментами для сборки (make / cmake / etc), отладчиками (gdb, lldb, например) и другими полезными тулами (valgrind, gprof, gconv, например), но это уже менее критично. Вообще, знакомство с Linux'ом и экосистемой разработки в нём будет плюсом.

    Ну и раньше третьего курса, как уже сказали, работать не рекомендуется.

    А ещё можно податься в Яндекс, Oracle (у них не только Java, но бывает и C++, не знаю, есть ли соответствующие позиции для студентов) и Intel (насколько я знаю, на текущий момент в Питере позиций нет, только в Нижнем и Москве). Гугл, как известно, из России уехал, а JetBrains, кажется, в C++ разработчиках не нуждается.
    Есть ещё куча других компаний поменьше, но их Вы найдёте сами.

    Ну и почитайте другие материалы на эту тему: [1], [2]

    P.S. Оценки в зачётке никого не волнуют. Если Вы только не собираетесь поступать в Computer Science Center, например. Или магистратуру СПбАУ.
    Ответ написан
    3 комментария
  • Оптимальный выбор ВУЗа в сфере IT?

    barmaley_exe
    @barmaley_exe
    Если хотите заниматься Машинным Обучением, то без ШАДа никуда. Есть, правда, ещё кафедра Математических Методов Прогнозирования на ВМК МГУ, некоторые преподаватели которой преподают, в том числе, и в ШАДе. Но в ШАДе интересного гораздо больше!

    Мой совет таков: идите в МГУ / ФизТех / Вышку, усердно учите математику первые 2-3 года (матан, дискретка (в т.ч. алгоритмы, много алгоритмов), алгебра (кажется, сверх линейной её части ничего не нужно), теорвер и матстат, методы оптимизации, функциональный анализ, численные методы и дифуры (довольно бесполезная в ML вещь, как мне кажется) ), а потом в ШАД. Там уже будут предметы вроде машинного обучения (много всякого), компьютерного зрения, алгоритмов работы с большими данными и другие, не менее интересные.
    Ответ написан
    Комментировать