Задать вопрос
Контакты

Достижения

Все достижения (7)

Наибольший вклад в теги

Все теги (35)

Лучшие ответы пользователя

Все ответы (23)
  • Linux: виртуально или полноценная вторая система?

    yokotoka
    @yokotoka
    Python guru
    У меня Ubuntu-виртуалка внутри Win-хоста, несмотря на то, что Ubuntu - это система, которую я активно использую 90% своего рабочего времени. Почему так:
    1. Это удобно. Можно быстро перекинуть виртуалку и запустить систему на другом железе, без плясок. И ничего не отвалится, и не словите фатал еррор при загрузке на не родном железе. Например, если нужно быстро перенести рабочее окружение со сгоревшего компа на рабочий и продолжить работу, или со стационарника перенести работу на ноут и поехать с ним работать с греческого пляжа, а потом обратно. Снапшоты, бекап и т.п. превращаются в действительно удобные операции.
    2. Win лучше поддерживает железо, как ни крути. Все производители железа (от процов до переферии) в первую очередь акцентируют внимание на Win. Энергосбережение, управление питанием - всё это намного лучше сделано в Win. У коллеги стояла Ubuntu единственной системой на ноуте. Из-за какого-то годами нерешаемого бага, процессорный вентилятор всегда работал на полных оборотах, процессор всегда работал на полную мощность, даже в режиме простоя и очень быстро выжиралась батарейка. В итоге сдался и перешёл на ту же схему, что и у меня. Ещё, помню не заводился специфический 3g-модем, драйверы для которого были только для Win.
    3. Софт. Лично для меня в Linux нет софта, который я использую, и который при этом требует прямой доступ к ресурсам (аудио DAW, требующие доступ к ASIO-интерфейсу звуковухи и т.п.), а в винде есть.
    4. Нет раздражающего переключения контекста. Это когда во второй системе сильно не хватает чего-то из первой, и нет возможности по-быстрому это запустить, что-то сделать и закрыть. Скажем, дабы сделать что-то в Linux - не требуется закрывать всё, что в результате работы было открыто в винде, перезагружать комп, логиниться вновь на тех сайтах, что нужны, вспоминать пароли или синхронизировать keepass. Просто запускаешь виртуалку, делаешь то, что в ней надо, закрываешь. При этом не нужно обрывать на полуслове, скажем, интернет-радио, на полукадре dlna-сервер, не обрываются сетевые шары, которым кто-то может пользоваться. Ну и если из линукса потребуется, вдруг, какая-то важная удобная тулза, win-only, уже настроенная на win-системе, не нужно будет делать 2 перезагрузки компа или париться с wine и настраивать всё так же, как и в win-системе.


    Всё зависит от задач, которые вы для себя ставите. Если они похожи на те, что я обозначил - попробуйте. Может понравиться. Тем более, сейчас всё больше и больше виртуализации вокруг, мир потихоньку перетекает в облака. Этот опыт может пригодиться в будущем.
    Ответ написан
    3 комментария
  • Ruby or Python?

    yokotoka
    @yokotoka
    Python guru
    Я стоял перед тем же выбором лет 6 назад и выбрал Python. Не пожалел. Он достаточно универсален, чтобы писать на нём не только сайты. Ruby, к сожалению, больше RoR-язык, чем язык общего назначения. Очень мало софта вне RoR у него и назначение очень узкое, хотя сам язык прикольный. Python же используется очень много где вне веба - начиная от микроконтроллеров, заканчивая сложными научными расчётами.

    И ещё, немного личного. Я ненавижу Django. Это один из самых худших веб-фреймворков, по странному стечению обстоятельств, оказавшийся в тренде. Он, заточенный под газетные сайтики и бложики, с тяжёлым синдромом велосипедостроения и Not Invented Here, лепится всюду, куда стоит и, особенно, куда не стоит. И это нелепо смотрится (особенно в нём убог ORM в сравнении с той же SQLAlchemy). Есть много более удачные примеры для многих применений (Flask, Pyramid). Если возьмётесь делать веб-приложение, а не сайт-визитку/блог (который лучше вообще делать на php и Wordpress), присмотритесь к ним повнимательнее.

    UPD: А вообще, создаётся ощущение, что сейчас лучше всего учить JS, хотя он плох почти всем, что в нём есть. :) Go, Rust интересны, но пока слишком незрелые. Тут ещё C#/.NET со своими open source движениями начинают смотреться неплохо. Ну и всегда есть Java для любителей винтажа и максимальной кроссплатформенности (с матюками). В общем, сложное сейчас время. :)
    Ответ написан
    5 комментариев
  • Как построить базу данных под личные сообщения?

    yokotoka
    @yokotoka
    Python guru
    Знаю, что многие нагруженные сервисы просто делают денормализацию данных (не только для чатов, но и для новостей и т.п.). Как правило, каждое отправленное сообщение в общем чате (или один на один) попадает одновременно каждому участнику чата в его личную ленту/таблицу/плоский файл. Это решает проблемы загруженности (каждый пользователь читает только свой набор отдельных файлов/таблиц/строк и не нагружает общие хранилища данных, где могут быть миллиарды записей при решении задачи "в лоб"). Также это решает проблему с удалением сообщений (один может удалить переписку, а другой - оставить себе на память). А ещё это автоматически решает проблему видимости сообщений в общем чате - если человека пригласили в беседу только что, то он не видит предыдущие сообщения участников. За попадание сообщений в "личную зону" каждого пользователя отвечает не база, а контроллер, который дублирует сообщения всем.

    Да, некоторые операции усложнятся, но часто ли вам нужно количество отправленных пользователем личных сообщений, или какая-нибудь статистика по личным перепискам всех пользователей, чтобы ради небольшого выигрыша по скорости доступа к этим данным делать всю систему отправки сообщений с тормозами? Для всех таких редко нужных запросов можно прикрутить отдельный поисковый индексатор и счётчики, map/reduce-алгоритмы и т.п.

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

    Кстати, необязательно хранить систему личных сообщений в базе. Можно, но необязательно. Для этого даже тупо xml'ы/json'ы подойдут. Ведь что чаще всего нужно от чата собеседнику? Чтобы 1) отправить сообщение, чтобы его прочитали; 2) получить сообщение; 3) заглянуть в историю чата. Это прекрасно ложится на модель "каждому пользователю - по отдельной копии каждого чата". Да, денормализация, но почитайте выше пример про пригласительные и ксерокс. В вашем случае контроллер будет делать "ксерокопии" письма и отправлять их всем адресатам. А что с этим письмом делать дальше - уже дело каждого.
    Ответ написан
    1 комментарий
  • Есть сайты для общения начинающих программистов, или что-то подобное?

    yokotoka
    @yokotoka
    Python guru
    Вот здесь есть реальная движуха по теме: slack-ru.hexlet.io
    Уже почти 4000 разрабов и сочувствующих тут тусят.
    Ответ написан
    2 комментария
  • Как убрать возможность просмотра фильмов на компьютере?

    yokotoka
    @yokotoka
    Python guru
    Увольнять нахрен тех, кто смотрит фильмы вместо того, чтобы работать и брать тех, кто действительно будет работать. Если на такую зарплату желающих больше нет - то повышать зарплаты, чтобы люди не хотели работу потерять. :)
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (6)