• Как поймать трафик(пакеты) исходящие от определенного приложения с определенным PID(Linux)?

    mva
    @mva
    CEO, CTO, Lua/Gentoo/IPv6 Pioneer
    Не согласен с предыущим оратором.

    Определённое приложение будет сидеть на определённом сетевом порте

    Это в корне не так. Даже если предположить, что приложение — демон (предоставляет какой-то сервис) оно может одновременно "слушать" пакеты на сколь угодно много портов.
    Я тут даже опущу описание самой технологии и того, что на "портах" никто не "сидит" и на самом деле "порты" это просто идентификаторы, указывающие кому этот пакет передать.

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

    А отвечая на вопрос ОПа — можно маркировать пакет по прилжению. Например:
    iptables -A OUTPUT -p TCP -m owner --pid-owner $PID -j <нужная цель, будь то LOG, ULOG, MARK или что угодно>
    Которое, правда, не очень работает на мультиядерных системах :'(

    Но можете ещё погуглить немного вокруг match packets by pid и набора утилит из tc/ipset/iptables

    // либо запустить то wine-приложение под отдельным пользователем и ичпользовать -m owner --uid-owner $id_пользователя. Так оно работает и на многоядерных системах тоже.
    Ответ написан
    Комментировать
  • Какие знания нужны для Python Junior-а?

    alxpy
    @alxpy
    Мне когда-то на подобный вопрос дали развернутый ответ (еще раз спасибо этому человеку). Я не смог найти ссылку на тот форум, но сам ответ у меня был сохранен:
    Вот список знаний, которыми должен обладать потенциальный Junior Python developer:

    Уметь самообучаться, находить нужную информацию.

    Иметь общие представления о том, что такое ОС и зачем она появилась.
    Понимать что такое процесс и как он “живёт” в ОС.
    Понимать что такое поток.
    Понимать что такое сокеты и зачем они нужны.
    Иметь представление о том, как устроен стек протоколов TCP/IP.

    Понимать что такое Linux.
    Уметь работать в sh.
    Понимать что такое виртуализация и знать какие бывают типы.
    Уметь настраивать виртуальные машины через vagrant или подобные инструменты.
    Уметь работать с GIT(создавать ветки, разрешать конфликты, etc)

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

    Уметь работать с БД(хотя бы CRUD, join)
    Уметь работать с nginx(хотя бы проксирование настроить)

    (можно просто написать - “прочитать Лутца”, но выделю пару вопросов)
    Знать чем отличаются new style классы от old style.
    Знать чем отличаются Python2 от Python3
    Знать чем отличается str от unicode и почему в программе нужно работать с unicode.
    Понимать алгоритм импорта модулей в Python.
    Понимать что такое генераторы и итераторы.
    Понимать что такое дескрипторы.
    Понимать что такое GIL и зачем он нужен.
    Понимать что такое WSGI и зачем он появился.

    + Уметь писать тесты, понимать зачем это нужно.
    + Практические и теоритические основы по framework.

    + выполнить норматив по ГТО
    + не пить и не курить.

    Так же можешь потренироваться по заданиям Юры Юревича.

    Заданиям Юры Юревича - тыц.
    Ответ написан
    4 комментария
  • Как синхронизировать файл между домом и работой, если на работе запрещены облачные сервисы?

    Jump
    @Jump Куратор тега Системное администрирование
    Системный администратор со стажем.
    • Можно воспользоваться другим сервисом синхронизации, например BtSync
    • Можно обойти блокировку воспользовавшись сторонним прокси, или vpn сервером.
    • Можно попытаться поставить пива админам.
    • Можно поговорить с шефом, чтобы он наехал на админов.
    • Можно притащить на работу 4g модем и пользоваться своим интернетом, который не контролируют злобные админы.
    • Можно уволится с такой работы, и продолжать спокойно синхронизировать файлы через дропбокс.
    Ответ написан
    1 комментарий
  • Думаю запустить соцсеть, советы по хостингу, технологии?

    sayber
    @sayber
    Да, я программирую на PHP и еще асинхронно!
    Посмотрели фильм "социальная сеть" ?

    Моя команда уже успешно реализовала пару соц.сетей.
    Поэтому могу ответить на несколько вопросов.

    1. Цена на разработку. Инвестиции были в размере ~6 миллионов, если на рубли пересчитать. Проект делался порядка 16 месяцев.
    2. Вы о чем?
    3. Нормальная соц. сеть не делается на CMS. За основу можно взять фреймворк. В нашем случае это Symfony2 и целый зоопарк.
    4. Выделенный сервер и не один.

    Первое - соц. сети не нужны людям, их и так как ... ну вы поняли.
    Людям нужен узкоспециализированный проект с оригинальной идеей.
    Не должно быть аналогов и/или ваш проект должен превосходить уже имеющийся.
    Вы придумали идею и не нашли аналогов? Тогда стоит подумать, поспрашивать - а нужна ли ваша идея людям.
    Если все ок, то садитесь/нанимаете человека для создания наиподробнейшего ТЗ.
    В крайнем проекте было 234 А4 листа. По мере реализации проекта, листов стало больше а нервов меньше =)
    Ну вот, у вас есть отличная идея, есть ТЗ и продуманный план работ. Вы постарались учесть большинство подводных камней. Нашли средства на проект, нашли команду.
    Ура, разработка проекта стартовала!

    А теперь все по новой... ну в плане идеи, ТЗ =)

    Еще хотите делать соц. сеть? Если да, то у вас должно получиться.

    P.S.
    izi.travel данный проект до беты, делался почти 2 года.
    То собирали команду по всему миру, то распускали, то инвестиции заканчивались и т.д.
    Хотя реальной работы было на месяца 4.
    Ответ написан
    Комментировать
  • Как поступить с сервером фирмы?

    RicoX
    @RicoX
    Ушел на http://ru.stackoverflow.com/
    Любой dedicated server на зарубежном хостинге, брать IP-KVM в комплекте, все ставить на шифрованный раздел, подключаться через VPN к нему и работать, если по уму делать выйдет по цене дороже чем софт купить.
    Зато можно на фирме завести сейф запустить в него провода, внутри положить штук 5 кирпичей и UPS, к бесперебойнику вентилятор и фалоимитатор подключить, в случае чего будет что изъять, при проверке говорить что ключей нет, пусть целиком изымают, как отроют - оценят. Если что крайний абзац шутка.
    Ответ написан
    3 комментария
  • Программирование с нуля. Как начать?

    ProgramCodePav
    @ProgramCodePav
    Front-end developer. Love open source
    Привет. Вы уже успели понять, что главное - желание. Но если и учиться (а это скучно), то надо заниматься максимально классными для вас вещами. Не менее важно видеть результат, поэтому лучше несколько маленьких проектов, чем один большой, который не закончите. Ответ на необходимость строго типизированного языка - да.

    Суть:
    Вам надо сначала изучить логику работы ЯП (pascal, на первых порах и C++ сойдет), потом уже браться за ООП (object pascal, C++, C#, Java и многие другие). А также рулит опыт. Сколько бы вы книг не вычитали, решает опыт. Читайте и пишите код. Устали читать, пишите код. Напишите программу на свой день рождения. Напишите программы для решения типовых задач (если учитесь) и не парьтесь с домашкой :)

    По делу. Я начинал также с паскаля, потом делфи (object pascal)... куча технологий и языков. Пришел к Java Android.

    Следует различать верстку и программирование. Верстка - производить разметку сайтов с помощью html/css, а программирование - решение задач по обработке данных (вольная формулировка). Программирование может быть в вебе, но не версткой - это программирование программ на сервере, которые обрабатывают интернет-ресурсы и подобные сетевые задачи.

    А теперь надо ответить на вопрос: Сколько у вас есть времени и каким бы вы хотели быть программистом (хорошим, лучшим или как хобби)?

    Если у вас много времени, терпения и желание стать лучшим, то надо изучать с нуля:
    pascal (не полностью, а просто научиться решать стандартный перечень задач - работа с массивами, вычисления выражений, работа с файлами, работа со структурами данных - так проще).
    В принципе это займет недели 2, если стараться. Дальше у вас уже будет понимание логики языка. Можно садиться на более сложные (c#/java советую, c/с++ интересные, но сложнее).

    Если у вас времени в обрез или вы хотите просто начать уже сейчас, то советую начать изучать Java. Имхо, Java - один из самых легких из продвинутых ЯП (посмотрите книгу Head First Java).

    Если смотреть издалека, то Pascal я советовал только потому, что он очень простой и функциональный... Он как раз помогает понять типы данных, важность соблюдения границ массива, а структуры данных позволяют работать почти как с ООП языками (типа Java/C++/C#/etc.). Однако всего немногим сложнее будет изучение java, благодаря книжке Head First Java - она отлично составлена, с рисунками, стрелочками и забита аналогиями, а минусом здесь является бросание в пекло (в ООП), где всякие непонятные классы и т.д., отвлекающее от самой основы логики программирования.

    По языкам. (не особо слежу, скажу по своим ощущениям)
    Сейчас особенно выезжают две сферы на рынке - мобильная разработка и веб-разработка (для сервера).
    Справляются с этими задачами круто Java, .net C#, C++.
    Java - львиная доля разработки под Android, Один из популярнейших языков для серверного программирования, big data и других вычислений, иные разработки.
    C# - самый активный конкурент в серверном программировании для Java, разработка под winphone, windows с прямочками от MS (ведь C# разрабатывает MS).
    С++ - везде, но в основном применяется для системного программирования, драйверов и участков программ, где нужна большая скорость выполнения программы (поисковые движки, обработка голоса). Мне он нравится больше всех, но это для себя) На этом языке сложнее всего научиться, но с некоторым опытом работы (2-3 года) можно пройти в топовые конторы.

    ------------
    Честно говоря, мне очень помогали знания курсов Архитектуры ЭВМ и алгоритмов в изучении. Это не обязательно, но очень интересно )

    Итог:
    Если хотите вытоптанный путь, но немного более долгий - начинайте с pascal и потом садитесь на java/C#. Такой путь не требует особых знаний, кроме самих языков (в отличии от С++, где нужны базовые знания о работе компьютера).
    Если вы сообразительный и сильный (умеете мотивироваться и добиваться), то начинайте сразу с java. Сложно будет первые пара программ. Гугл сделает их за вас, но вообще это очень легкий язык.
    С++ - не знаю. Многие советуют с него начинать. Вообще, он довольно простой и структурный в начале, усложняется довольно быстро, но логично. Хороший язык, но его проблема для новичков - нужно учитывать очень много нюансов.

    Кстати, у java есть небольшой плюс - javarush.ru. Интересный проект) фремиум, но бесплатно можно пройти уровней 10-15, это, по сути, позволит познакомиться с языком.
    PS: если вы не решились, начинайте любое. Начните сложные, простые языки, поделайте, поломайте. Это правда поможет. Пробуйте, изобретайте свое.
    Что-то я затянуто написал... ночь.:)

    Успехов!
    Ответ написан
    Комментировать
  • Что можно поднять на сервере?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Интересует все варианты

    openssh
    ftpd
    postfix
    bind
    apache
    nginx
    lighttpd
    mysql
    postgresql
    mongodb
    couchdb
    redis
    memcached
    mogilefs
    logstash
    influxdb
    rabbitmq
    beanstalkd
    gearman
    svn
    git
    mercurail
    owncloud
    gitlab
    gitlab-ci
    redmine
    jira
    youtrack
    git stash
    bamboo
    Web site
    ....
    мне продолжать?)))
    Ответ написан
    1 комментарий
  • Как проще освоить linux?

    vvpoloskin
    @vvpoloskin
    Инженер связи
    Я пешеход со скажем 30 лет. Хочу научиться плавать. Пытался это сделать на реке, но что-то пошло не так, и с этого момента на реку я больше не ходил. Подскажите, с чего можно начать и что почитать, чтобы научиться плавать?

    Смешно? Ответ на ваш вопрос - нужен просто реальный опыт. Чтобы вы не делали, плавать только послушав советы и почитав книжки не получится
    Ответ написан
    7 комментариев
  • Как запустить скрипт при выполнении команды reboot?

    nalomenko
    @nalomenko
    Руководитель отдела разработок в студии «Lava»
    Идите в настройки Вашего bash, и пропишите алиас для любой команды.
    Ответ написан
    Комментировать
  • Что означают цифры в манах FreeBSD в разделе ссылок на другие маны?

    Видимо плохо гуглите )
    Цифра в скобке задает категорию, к которой принадлежит команда. Используются для организации руководства, чтобы избежать дублирования, т.к. одни и те же команды могут принадлежать разным категориям. Используется, например, так man 8 reboot
    Список категорий:
    1. - исполняемые программы и команды оболочки;
    2. - системные вызовы;
    3. - библиотечные вызовы;
    4. - файлы устройств (обычно расположены в /dev);
    5. - форматы файлов;
    6. - игры;
    7. - макропакеты и соглашения;
    8. - программы системного администрирования;
    9. - процедуры ядра
    Ответ написан
    Комментировать