• Как восстановить коммиты из безымянной ветки?

    v_decadence
    @v_decadence
    Через git reflog ищете хеши потерянных коммитов.
    reflog выводит все хеши, где был HEAD.

    И потом:
    git branch new-branch-name hash

    Ну а потом переходите в develop (хотя Вы и так вроде там) и мержите потерянные изменения:

    git checkout develop
    git merge new-branch-name


    Естественно, это всё через консоль надо делать.

    Главное, делать это в том хранилище, где были коммиты, и до git gc, иначе информация о недостижимых коммитах будет удалена.
    Ответ написан
    17 комментариев
  • Что мой провайдер знает обо мне?

    @nirvimel
    Когда я захожу на определенный сайт, провайдер видит URL?

    Да.

    А если я захожу на https?

    Известен IP сервера и имя домена. Больше ничего.

    Откуда провайдер узнает, что я скачиваю определенный фильм/программу через torrent?

    Торрент-клиент общается с трекером по HTTP. Все видно насквозь: конкретные торренты + вся статистика (когда начато скачивание, когда закончено, когда пошла раздача, сколько роздано). Возможно подключение к трекеру и по HTTPS, но rutracker.org такой возможности не дает (мне тоже интересно почему).

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

    Провайдер не хранит у себя весь трафик. Это технически невозможно. Но трафик обрабатывается, классифицируется и ведутся логи о том какой тип трафика когда входил/уходил от абонента.

    Или он отслеживает факт скачивания .torrent файла, а затем делает вывод по идущим пакетам, что это скачивается?

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

    Когда я пользуюсь VPN, что видит провайдер?

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

    Что я зашел на определенный IP и с него идут зашифрованные потоки?

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

    OpenVPN будет работать через VPN IP и в браузере и при обновлении Windows, драйверов, ...?

    В зависимости от настройки. Но в общем случае, да, так.

    Читал, что в Windows есть такая особенность, что если провайдер как-то урезает пакет, то VPN отключается и сайту показывается мой реальный IP?

    Это не связанно с провайдером. Это особенность Windows. Когда VPN отваливается, весь трафик вылетает наружу в открытом виде. Опять же зависит от настроек. Но это еще одна цена "удобства" при использовании Windows.

    При этом провайдер видит на каком я сайте, что скачиваю?

    VPN отвалился - хацкер спалился.

    Таких фишек много?

    Смотря о чем речь. В сфере сетевой безопасности и анонимности различных нюансов вообще много.

    Как от них защитится?

    Учить мат.часть. Разбираться в сетевых протоколах и в устройстве ОС.

    Если пользуюсь каким-то расширением типа ZenMate, dotvpn, провайдер аналогично как и с VPN видит что что-то отправляется и приходит на определенный VPN IP?

    Расширения очень разные. Они могут базироваться на совершенно разных технологиях. Ни один специалист вам не скажет за все расширения. Не исключено, что многие из них, по сути - honeypot, то есть созданы с целью слежения за любителями анонимности, привлекают своим удобством и дают ложное чувство безопасности.

    При использовании Tor, кто-то пользуется моим IP, пока я пользуюсь чужим?

    Нет. Если у вас не сконфигурирован Exit Node.

    Что при этом видит провайдер, что я получаю потоки данных с определенных IP и каждый раз разный IP?

    У них есть система точного обнаружения использования Tor. Это факт остается в логах с теми же последствиями, что и для VPN.

    Провайдер видит URL?

    Через Tor и VPN - нет.

    Каким образом можно полностью управлять сетью на ПК, видеть что, куда и когда отправляется или приходит на ПК (Windows, Linux)?

    Видеть все: https://www.google.com/search?q=Wireshark
    Блокировать все лишнее: https://www.google.com/search?q=Comodo+Firewall
    Ответ написан
    22 комментария
  • Куда стремиться PHP программисту?

    riky
    @riky
    Laravel
    постараться понять смысл жизни и ответить на вопрос "есть ли жизнь после смерти?"

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

    так вот представь себя после и ответь: что было действительно важно?
    Ответ написан
    4 комментария
  • Как вы делаете дизайн сайта?

    paulradzkov
    @paulradzkov
    Дизайнер, верстальщик, начальник отдела UI
    1. На первой встрече обычно удается узнать только область деятельности и смутные очертания того, как представляет себе результат заказчик. Обычно заказчик показывает пару сайтов из своей отрасли, которые ему нравятся. Мы с ним можем совместно на бумаге сделать пару эскизов и составить список «того, что должно быть на сайте».

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

    3. Дальше нужно узнать ответы на вопросы из пункта 2 и тогда можно оценить сроки и стоимость.

    4. Начинаю рисовать wireframes. В графическом редакторе (у меня Sketch) создаю новый документ, размечаю в нем модульную сетку и начинаю накидывать туда контент.

    На этом этапе у меня только белый фон, черный текст шрифтом по-умолчанию (Open Sans) и 2-3 оттенка серого для кнопочек, линеечек и плашечек. Никакого дизайна, но строго соблюдается модульная сетка. Контент использую только реальный (который дал клиент) или выдуманный (тексты с чужих сайтов, которые могли бы подойти к этому сайту, или придумываю текст сам), но ни в коем случае не «lorem ipsum» и не абстрактный текст ни о чем. Так как я делаю конкретный сайт на заданную тему, а не шаблон, то важно чтобы тексты были по-существу, и «рыба» тут будет мешать: если нечего написать, надо делать дизайн учитывая, что текста очень мало; если есть много текста, надо дробить его на подзаголовки, разбавлять врезками и иллюстрациями. Часть выдуманного текста потом перепишется в реальный, с использованием фактов о клиенте, остальное уберется за ненадобностью.

    5. Заливаю нарисованные страницы в invision, ставлю между страницами ссылки, ставлю комментарии, как это должно работать. Там, где контент придуман, заметка о том, что нужно переписать текст в таком же ключе. Где использована чужая иллюстрация, комментарий «заменить на настоящую» и т.д. Wireframes готовы.

    6. Заказчик видит более оформленный вариант, у него появляются конкретные комментарии, правки по текстам и фактам. Еще одна-две итерации и вайрфреймы превращаются в согласованное ТЗ — кликабельный прототип с реальными контентом.

    7. Начинаю раскрашивать вайрфреймы. Первая страница — «О компании». На ней обычно есть несколько абзацев текста, пару заголовков. Сначала шрифты: выбираю основной шрифт, размер, межстрочное расстояние. Font-family выбираю только из бесплатных шрифтов, иначе это может вылиться для заказчика в дополнительные затраты.

    8. На основе страницы «О компании» создаю отдельную страницу с типографикой и доделываю все остальные текстовые стили: заголовки, основной текст, lead-text, small-text, текст в таблице, списки, цитаты и отзывы, врезки, состояния ссылок в тексте, — всё, что встречалось в вайрфреймах. Позже на эту страницу будут добавляться состояния кнопок, полей ввода, табов и других интерфейсных элементов. Из элементов этой страницы создаю динамические стили, которые потом применяю ко всем остальным частям вайрфрейма.

    Кроме того, на странице с типографикой отмечаю расстояния (margins) между элементами: между заголовками и текстом, между секциями контента. Это помогает не только верстальщику, но и мне самому. Шпаргалка по расстояниям помогает придерживаться общего стиля на всех страницах, и верстальщику потом не надо ломать голову: это ошибка дизайнера или надо прописать исключение. Пример такой странички

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

    10. Отрисовываю все остальные элементы. Вайрфреймы плавно превращаются в финальный дизайн.

    11. Если в проекте много иконок, то делаю сборную страницу для иконок, а сами иконки символами вставляю на все остальные страницы.

    12. Заливаю в invision, жду комментов от заказчика, вношу правки.

    13. Если правок больше нет, создаю слайсы для экспорта картинок, иконок и т.д. Опять навожу порядок в слоях и группах. Invision автоматически экспортирует все слайсы в папку assets. Ресурсы экспортирую в обычно в @1x, @2X и svg.

    14. Если верстальщик на Винде, заливаю исходник в https://zeplin.io/ — там можно через браузер посмотреть параметры шрифтов, размеры и расстояния между элементами.

    --

    Всё это идеальный алгоритм. На практике некоторые шаги отсутствуют, некоторые меняются местами или идут параллельно. Так как я часто сам верстаю свои дизайны, то порядок в слоях не навожу, экспорт делаю по мере верстки, а иногда вообще не дорисовываю дизайн — когда идея полностью оформилась в голове, быстрее сверстать и додизайнить в браузере, чем нарисовать и сверстать.
    Ответ написан
    2 комментария
  • Что значит heapUsed в JSON который отдает process.memoryUsage?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Куча

    vsize (Virtual Memory Size) - Общий размер памяти доступный процессу (включая shared memory, swap и т.д.)
    rss (Resident Set Size) - сколько памяти из RAM доступно процессу.
    heapTotal - сколько памяти отдано под кучу
    heapUsed - сколько уже памяти аллоцировано на куче

    По вашим данным судить об утечке памяти нельзя, так как недостаточно памяти использовано (heapUsed сильно меньше heapTotal), возможно просто еще сборщик мусора не запускался.
    Ответ написан
    2 комментария
  • Нет звука в наушниках windows 7 нетбук lenovo s110 ideapad

    mmmaaak
    @mmmaaak
    У меня похожая проблема, установлена винда восьмая и рядом убунту. Ноут Asus n53sv, звук тоже реалтековский. После загрузки в линукс, а потом в винду, звук через вход для наушников пропадает, а если отключать, звук через встроенные колонки идет. Пока убунту небыло звук на винде работал норм. Заметил одну особенность. Если ноут вырубить некорректно, аккум вытащить например, то после включения и загрузки в винду, когда она начинает восстанавливаться после некорректного завершения работы, звук появляется. После загрузки в убунту, на винде потом опять пропадает звук.
    Ответ написан
    3 комментария
  • Как установить и настроить PhpStorm в Ubuntu?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Не нужно рута!
    0) Ставите Java
    1) Скачиваете и распаковываете дистрибутив куда угодно
    2) В PhpStorm: Tools -> Create Desktop Entry...
    Всё
    Шрифты настраиваются по желанию, тоже не нравится в последних EAP
    Ответ написан
    Комментировать
  • Как правильно использовать несколько мониторов?

    @iLexx_13
    Расскажу про себя (программист на php):
    ОС Ubuntu 12.04.
    2 монитора 24".

    3 рабочих стола:
    1.
    Левый монитор — NetBeans на весь экран
    Правый монитор — Firefox на весь экран
    2.
    Левый монитор — лог ошибок сервера
    Правый монитор — корпоративный джаббер
    3. Личный так сказать экран)))
    Левый монитор — Chromium на весь экран
    Правый монитор — личный джаббер, скайп, аська.

    — как вы научились оптимально использовать несколько мониторов для работы,
    методом проб и ошибок, сначала использовал 1 рабочий стол, потом до 4х дошел, в итоге остался на 3х — хватает на все

    — какими программами пользуетесь для управления рабочими столами,
    стандартными, встроенными в ОСь

    — пользуетесь ли вертикальным положением,
    нет, думаю мне было бы неудобно

    — был ли дискомфорт и как от него избавились,
    сначала было непривычно, но сейчас

    — какую статью советуете прочесть начинающему пользователю.
    не знаю, вообще ничего не читал, думаю проще самому дойти до удобного расположения всего и вся.

    Как-то так.

    P.S. Описан рабочий комп.
    Ответ написан
    1 комментарий
  • Как правильно работать на oDesk?

    Ambrose
    @Ambrose
    Ух, что ж вы так обстоятельно и с такой опаской к этому подошли-то? Это же всего лишь фриланс, здесь всё проще)

    Расскажу свою маленькую историю. Работа у меня неплохая, в принципе устраивает, было интересено просто попробовать себя на одеске развлечения ради. Прочёл пару статей, зарегистрировался, прошёл тест на знание английского (натыкал только на below average :( ) и начал глядеть простенькие задачки «на вечер».
    Никакую почасовую ставку даже не рассматривал, только fixed price. Зачем загонять себя, если опыта пока маловато?

    Далее про выбор задачек. Смотрим цену, если она устраивает, ставим предложение процентов на 10 ниже, чтобы обратили внимание. И самый основной шаг — правильно составить cover letter. Минимум общих фраз о том, какой вы хороший (я вообще об этом писал одно предложение в начале), основное внимание уделяем задаче. Надо показать заказчику, что вы прочли задание и прониклись им. Задаём пару уточняющих вопросов или предложений по вариантам решения. Только не переборщите, письмо размером с этот ваш вопрос никто читать не будет. Помните, вводное письмо — это то, по чему оценит вас заказчик в первую очередь. Это то, что отличает нас от индусов, которые просто штампуют своё письмо, даже не читая текст задания. Наверняка замечали, что во многих вакансиях специально стоит такая «защита от дурака» :)

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

    В таком режиме примерно 25-30% моих писем находили отклик. Дальше — предварительное согласование с заказчиком. Тут важно понять, какой он человек, дабы не напороться на неадеквата. Если общается в стандартном английском деловом стиле, отвечает на поставленные вопросы — всё скорее всего будет хорошо. Однажды мне попался человек, которые дважды не ответил на конкретный вопрос, продолжать общение с таким не было никакого смысла. Либо некомпетентен, либо невнимателен, а зачем нужен человек, из которого потом придётся тянуть клещами? И да, лучше конечно выбирать европейцев/американцев, общаться с малограмотными азиатами не слишком приятно.

    На некоторые вакансии я отвечал только для тренировки — обмозговывал задачу и составлял письмо. Было интересно, ответят или нет. Потом просто отклонял предложение, ведь до заключения контракта вы никому ничего не обязаны. После одного из таких отклонений (с пометкой «слишком маленькая цена»), ко мне снова обратился заказчик с предложением заплатить больше. Пришлось всё таки взяться и сделать :)

    В общем, у меня к вам один совет: относитесь проще. Начинайте с простого, не нужно рубить с плеча и уходить во фриланс с основной работы. Уйти вы всегда успеете. А за то время, пока вы читали уйму книжек, зачем-то проходили кучу тестов и писали огромный вопрос на хабр, вы могли просто взять и сделать несколько простых задачек на одеске, получить немного звёздочек и практический опыт вместо голой теории.

    P. S. Всё вышенаписанное воспринимать как поток сознания дилетанта с тремя выполненными задачками и парой сотен баксов на счету)
    Ответ написан
    2 комментария
  • MySQL - выборка из таблицы многие ко многим

    @nmike
    SELECT mags.*, COUNT(*) AS c
    FROM mag_tov, tovs, mags
    WHERE mt_tov_id = tov_id AND mt_mag_id = mag_id
    AND tov_name IN ("ПЕРЕЧИСЛИТЕ_ЧТО_ХОТИТЕ")
    GROUP BY mag_id
    HAVING c = КОЛЛИЧЕСТВО_ТОГО_ЧТО_ХОТИИТЕ

    если надо 'молоко', 'мясо' и 'чай'

    то
    SELECT mags.*, COUNT(*) AS c
    FROM mag_tov, tovs, mags
    WHERE mt_tov_id = tov_id AND mt_mag_id = mag_id
    AND tov_name IN ('молоко', 'мясо' и 'чай')
    GROUP BY mag_id
    HAVING c = 3


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

    try4tune
    @try4tune
    С точки зрения архитектуры:

    Интерфейс описывает свойства. Обратите внимание на классические названия интерфейсов: Throwable, Countable, Comparable, Iterable и т.д. Возьмем, к примеру, интерфейс Rollable (катящийся), и Foldable (складывающийся).

    Абстрактный класс же описывает сущность. Например, стол: Table_Abstract. Стол может быть деревянным, тогда будет Table_Wood extends Table_Abstract. Также стол может быть хирургическим: Table_Surgical extends Table_Abstract. В таком случае Table_Abstract объединяет общий свойства всех столов (скажем, площадь поверхности, наличие ножек и т.п.). А конкретный класс описывает сущность определенного типа столов.

    Связью же интерфейсов и классов Вы описываете свойства. Например, стол можно катить: Table_Abstract implements Rollable. Деревянный стол, например, можно сложить: Table_Wood implements Foldable.
    Ответ написан
    5 комментариев