• Python или C++?, что перспективнее?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    Какой язык с наибольшей вероятностью будет востребован через условные лет 5?

    Не важно.

    Какой язык выбрать чтобы потом извлечь из него наибольшую выгоду?

    Тоже не важно.

    Востребованы всегда будут алгоритмы, математика, архитектура, ну и шаблоны проектирования .

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

    А для обучения я бы не советовал начинать с языков с динамической типизацией (python, js ...) и со слабой типизацией (C/C++).

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

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

    И не нужно зацикливаться на одном языке - расширяйте свой кругозор, изучая по очереди или одновременно разные ЯП :)
    В идеале такая цепочка изучения для хорошего понимания: pascal -> go -> c -> c++ -> js/python
    Также не стоит забывать про Java, C#.
    А если захочется хардкора, то есть Haskell, Rust и т.д.
    Ответ написан
    Комментировать
  • Можно ли скачать все зависимости deb?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    apt-get download $(apt-rdepends <package>|grep -v "^ ")
    Далее копируете все *.deb файлы и переносите на ПК без интернета.

    Вангую, следующий вопрос будет - как установить много пакетов в linux без интернета, регистрации и смс?(А нет, не будет - юзера заблокировали на месяц:) )
    В папке с *.deb файлами sudo dpkg -i *.deb

    Дану блин!!!
    Возьмите смартфон или планшет, включите на нем usb модем, и подключите к ноуту. Только не говорите, что на ноуте нет usb портов.


    PS: Только что проверил. Отключил интернет на ноутбуке. Взял телефон, включил на нем usb-модем. Подключил по USB к Ubuntu 20.04. ВСЕ! Оно само все определило и подключило, без доп настроек!
    Ответ написан
    5 комментариев
  • Кто знает как делать такие анимации?

    @lolzqq
    HTML,CSS,JS,PHP
    Простые без затей на css

    Сложные уже на three.js
    Ответ написан
    4 комментария
  • Как лучше всего хранить такой набор данных?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    То есть у вас единственный затык - "исчезновение" данных из файлов? Которое по факту оказывается и не исчезновением, потому что данные на месте? Тогда не мучайтесь с адаптацией в БД, однако решайте вопрос с "ложным исчезновением" данных.

    P.S. Хотя бы проверьте, что блокировка действительно блокирует.
    Ответ написан
    2 комментария
  • Что ассимптотически сложнее - линейная или квадрат логарифма?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Открываем Wolfram Alpha, вводим n или (log n)^2 или даже n/(log n)^2 и сразу получаем ответ: линейная сложнее.
    Ответ написан
    7 комментариев
  • Лучший способ избежать race condition, в данном случае?

    @ghostiam
    На Go писатель, серверов пинатель.
    Примеры с каналом
    Когда знаем кол-во данных:
    https://play.golang.org/p/7pNGCebvqlo
    Когда не знаем:
    https://play.golang.org/p/7WtVnXwjtuo

    Подробности в комментариях:
    https://qna.habr.com/answer?answer_id=1901263#comm...
    Ответ написан
    Комментировать
  • Как вывести файлы которые были модифицированные 3 или больше дней назад у каталоге /etc?

    @unseriously
    Поиск файлов, которые были модифицированы в последние 7 дней, но не позднее чем 3 дня назад:
    find /target_directory -type f -mtime -7 ! -mtime -3
    Ответ написан
    3 комментария
  • Как скопировать файлы с умирающего, как я понимаю, жёсткого диска?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    все просто
    НЕМЕДЛЕННО все ВЫКЛЮЧИТЬ.
    Принести диск (или весь ноут) его в сервис по восстановлению дисков, пусть они вытащат диск и снимут с него все файлы.

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

    Да, недешево, но если вам нужны данные - это единственный способ вытащить оттуда максимум.
    Все попытки что-то сделать по интернет инструкциям, если диск физически выходит из строя - риск потерять бОльше данных.
    Ответ написан
    Комментировать
  • AWS: Как посчитать?

    ayazer
    @ayazer
    Sr. Software Engineer
    Нужен обычный VPS Linux. Пара сайтов, может пара скриптов. Мне вполне хватает RAM 1 Гб, 2х2000 MHz, 15 Гб SSD. Я правильно понимаю, что ближайший аналог a1.medium https://aws.amazon.com/ru/ec2/pricing/on-demand/ 0.0255*12*30*12 = 110.16 USD в год? Больше не за что не нужно платить?

    + трафик по гб + доп. айпишники. ну и для этой цели смотрите на зарезервированые инстансы - будет дешевле процентов на 40, on-demand = вот прямо сейчас нужно еще 10ок машин чтоб обработать нагрузку. и через пару часов они выключаться (ну и оплачивается только время работы)

    Есть ли у AWS какой-то экономный вариант для приложений на node js(типа heroku)? Контейнера или что-то такое.

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

    Если речь про s3 website, туда же можно загрузить angular и т.д.?

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

    Я правильно понимаю, что для типичных задач (интернет магазин, лендинг и т.д.) экономнее взять s3 website(дает скорость загрузки через их сеть) + где-то сторонний (не на AWS) VPS где держать базу, скрипты или ботов
    да. и может даже посмотреть на какой-то другой сдн, у меня очень большие сомнения что с3 будет дешевле
    Ответ написан
    Комментировать
  • Можно ли запустить 3 приложения в 1м docker?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Можно, но не нужно.
    Ответ написан
    Комментировать
  • Для чего нужен Docker?

    @spotifi
    Внутри Docker только Linux, и, экспериментально, FreeBSD. Запускается нативно под Linux и, экспериментально, под FreeBSD. Под MacOSX, Windows - через виртуальную машину.

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

    Это почти виртуальная машина. Почти, да не совсем.


    Есть такое понятие "ад зависимостей". Любое ПО устанавливаемое на компьютер, тянет за собой зависимости (конфигурационные файлы, статические файлы называемые обычно asset, вспомогательные утилиты/сервисы, библиотеки и пр.). Ряд из этих библиотек/утилит/сервисов несовместим друг с другом. А с учетом того, что каждая из этих библиотек/утилит/сервисов имеет и свои зависимости - ситуация еще хуже.

    Например, мы используем Yandex.Cocaine, которая нормально компилируется только на Ubuntu 14.04 (и, вроде, на Debian 7). Но не под CentOS 6, 7, Debian 8, FreeBSD 9, 10, Ubuntu 15, 16 и пр. - скомпилировать его невозможно. Запускаем в этих операционных системах в Докере.

    С другой стороны, и одновременно с этим, вам необходимо установить другое, более современное ПО. И одновременно более старое. Причем речь даже не идет об серьезно отличающихся версиях Linux. Например, одно ПО требует не менее Ubuntu 14.10, а другое не более Linux 14.04.

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

    Таким образом, мы имеем бинарный файл запускаемый как бы в своей операционной системе.

    Вы можете сказать - ба, да это же давно известная виртуальная машина. Но нет, это не так. Это так называемые контейнера. Никакой виртуальной машиной там и не пахнет. За исключением Windows и MacOSX, где работа без виртуальном машины пока экспериментально возможно только, а нормой в этих ОС является использование Докера внутри полноценной виртуальной машины.

    Но виртуальные машины с Докером используются только для разработки. Для запуска в production виртуальные машины с Докер не используются.

    Докер использует контейнеры операционной системы. LXC в Linux, Jails в FreeBSD. Контейнер - это область операционной системы, изолированная от основной части операционной системы. В контейнере свое дерево каталогов (включая системные /dev, /bin, /sbin и пр.), свои сетевые порты и пр. и пр.

    Но при этом не используется полная виртуализация. Что существенно экономит ресурсы. Запустить 100 полноценных виртуальных машин вряд ли получится даже на мощном сервере. А вот запустить 100 контейнеров Docker даже на слабом домашнем компьютере - возможно.

    Правда использование не полной виртуализации ограничивает использование операционных систем внутри контейнеров. Как правило, это специально подготовленные версии Linux или FreeBSD. Именно специально подготовленные. Windows - в принципе в контейнере запустить невозможно.

    Контейнеры существовали и до Docker. Докер, строго говоря, это всего лишь очень удобный набор инструментов, собранных воедино, для управления контейнерной виртуализацией. Но очень удобный.

    Зачем это используется?

    Ребята из всяческих Dropbox, Facebook и и пр. гигантах, запускающие по 1 млн. различных программ в своих сервисах, столкнулись, что невозможно везде гарантировать идентичные настройки операционной системы. А это критично.

    Вплоть до того, что идеально написанная и оттестированная программа на реальном сервере начинает себя вести непредсказуемо.

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

    Более того - изначально разработчик программного обеспечения тестирует программу в контейнере Докер, с определенными настроками. И в этом же (или с такими же настройками) контейнере Докера программа уезжает на сервер.

    Это позволяет гарантировать гораздо большую идентичность среды разработки и среды исполнения.

    До этого люди мучались, придумывали хитрые инсталяторы...

    Потом плюнули на попытки упорядочить окружение в ОС - и сейчас концепция такова - устанавливать программы на сервера вместе со своими индивидуально настроенными под них операционными системами - то есть внутри контейнеров. 1 контейнер = 1 настройка ОС = 1 программа внутри.

    Другими словами:
    • Докер-контейнер нужно использовать для отладки.
    • Тот же Докер-контейнер нужно использовать и на сервере.


    Это позволяет не трудиться с настройками "под сервер" локально на машине разработчика. Это позволяет разрабатывать на машине разработчика совершенно разные программы одновременно, которые требует несовместимых настроек операционной системы. Это позволяет давать гораздо больше гарантий, что программа на сервере будет вести себя также как и на машине разработчика. Это позволяет разрабатывать под Windows/MacOSX с удобным "прозрачным" тестированием под Linux.

    Докер применим к созданию/настройке только серверного программного обеспечения под Linux (экспериментально под FreeBSD). Не для смартфонов. А если десктопов - то только программное обеспечение без GUI.

    Посколько Докер позволил одним махом упростить работу разработчикам и админам и повысить качество результата - сейчас бум на Докер. Придумано огромная гора инструментов для управления развертыванием приложений созданных с Докером. Если раньше чтобы запустить 10 000 программ на 1000 серверах нужно было как минимум 3 высококвалифицированнейших девопса, которые писали кучу описаний как это сделать на Puppet, Salt, Chef, Ansible, да и то не было гарантий, это все тестилось месяцами. То сейчас с Докер даже один квалифицированных девопс может рулить миллионами программ на десятках тысяч серверов. С куда как большей гарантией, что все это заведется нормально.

    UPD:

    Может сложиться ложное впечатление, что разработчик готовит контейнеры в Докер, а потом передает их админу.
    Правильная методология все же другая:

    Разработчик отдает весь свой результат в систему CI (обычно через git)
    CI на каждый новый коммит делает с помощью Docker образ для тестирования.
    Если тесты проходят успешно, то этот же самый Docker образ, отправляется на развертывание в production.
    Или, чуть иначе в компилируемых системах, где исходники не нужны в production: в Docker производится развертывание среды для компиляции, а для тестирования разворачивается второй образ с уже откомпилированным добром, который уже отправляется в production.

    То есть при правильной огранизации дела разработчик не может/не должен влиять на то, какой будет образ.
    А вот в тестовой среде (запускаемом на сервер, недоступном разработчику в больших командах) и в production как раз используется один и тот же образ.

    Основная идея - что тестировали, ровно то и запускаем на боевом сервере. Один-в-один, включая те же самые файлы (не такие же, а именно те же самые).
    Ответ написан
    18 комментариев
  • Для чего нужен Docker?

    @viiy
    Linux сисадмин \ DevOps
    Представьте что нет никакой ложки докера.

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

    2) У вас есть физическая машина + на ней виртуалки. Вы выделяете под каждую задачу свою виртуалку, там сидят отдельные пользователи, вы навели какой то порядок. Появляется задача - пользователи хотят php 6, а его нет, хотят python3, а его нет, хотят Mongo, а она старой версии. Вы обновляете репозитарии, качаете новые пакеты, ставите, часть пользователей довольны, часть нет - им нужна старая версия какая была. Упс!

    3) Одна физическая машина + еще больше виртуальных машин. Вы разделили всех пользователей так, чтобы никто не дрался за версии софта, если нужен php6 - иди на эту машину, нужен php5 - вот на эту. Все счастливы, но появляются разработчики, которые говорят буквально так - "а у меня на рабочей машине все работает, я перенес все как было на виртуалку, а у меня появляется ошибка missing library libXXX.so.X". И вы понимаете что вам остается только создать полную копию машины разработчика, чтобы софт поехал на этой виртуалке без ошибок... И тут появляется Docker! :)

    4) Docker решает именно эту проблему. Вам не нужно заботится о софте который установлен на сервере/виртуалке. Вы просто берете и переносите софт со всеми "кишками" на другой сервер и он просто работает. Работает за счет того, что все "кишки" это слои файловой системы нанизанные как бисер друг на друга. Дополнительно решается проблема свободного места, т.к слои многократно переиспользуются контейнерами, если вам нужен php + одна библиотека, а другому php + другая библиотека, вы используете (грубо говоря) слой php, а для дополнительной библиотеки делаете отдельный слой, одновременно другой человек делает над php другой слой и вы не деретесь между собой и не видите чужих библиотек. Это грубо и скорее всего ради одной библиотеки никто новый слой не делает, делают слой пожирнее.

    Все запущенные процессы Docker помещает в изолированную среду процессов, файловой системы и сетевого стека. Есть много особенностей по работе с Docker, т.к он предполагает, что в одном контейнере вы запускаете один процесс. Если вам нужно запустить целый набор демоном, тут появляются проблемы, нужно писать шелл-скрипт, который все это поднимет в контейнере. Так же есть особенности по сети, файловой системе. Для кого то Docker спасение и решение всех проблем, но я как сисадмин от этого всего не в восторге.
    Ответ написан
    15 комментариев
  • Какой IDE выбрать вместо Borland C++?

    @acwartz
    Тут должна быть ваша реклама.
    Кто там что забросил? RAD Studio C++ Builder живее всех живых. Бесплатная редакция вотъ.
    Ответ написан
    Комментировать
  • Есть ли способ оценить время на изменение схемы?

    ayazer
    @ayazer
    Sr. Software Engineer
    pt-online-schema-change/gh-ost и не страдайте
    Ответ написан
    Комментировать
  • Как разбираться c проблемами различного масштаба в Linux самостоятельно?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Практика.

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

    Вот например. Однажды я решил ткскзать "кругозор расширить" и вместо старенького EL6 поставить что-то новое с блэкджеком и девочками. А поскольку я ненавижу systemd - выбор оказался довольно ограничен и я остановился на Calcualte Linux (российский форк генты с собственными прибамбасами). Да, это довольно опрометчивое решение, но все-таки у меня за плечами много лет админства FreeBSD.
    И что? Нормальное понимание того, как "эта [beep][beep][beep] лошадь" работает" пришло по-моему после четвертой переустановки :) Ну то есть после того, как я своими действиями убил систему, переставил и снова убил...

    Терпение , знание английского, и гугл в зубах...
    Ответ написан
    Комментировать
  • Как изменить место хранения БД для определенного пользователя?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    MySQL построен по клиент-серверной технологии. С файлами базы данных работает сервер, к которому обращаются клиенты. Сервер может располагаться на том же компьютере, что и клиент, или на другом, доступном через сеть. Такая технология используется, как правило, когда все экземпляры приложения работают с одной общей базой данных.
    Если вам надо держать отдельную базу данных для каждого экземпляра приложения, то смотрите в сторону SQLite.
    Ответ написан
    3 комментария
  • Как обработать данные в горутинах пакетами?

    @t38c3j
    10k это не много, можете рассмотреть простой пакет для этого https://github.com/alitto/pond
    Ответ написан
    Комментировать
  • Как восстановить данные с жесткого диска?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    Во время пользования компьютера перестал работать жёсткий диск

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

    Никаких ударов по диску не было, диск крутится

    Необычных звуков точно нет? У 2.5" дисков может быть нужно приложить ухо вплотную.

    Сервисных центров куча, но непонятно, какой из них работает действительно качественно

    Вот универсальная инструкция по выбору центра восстановления данных.

    Кто-нибудь может посоветовать, что делать в данной ситуации? ... Жесткий диск не важен, важны только данные с него

    Для начала хорошо бы оценить что произошло. Пока (до уточнений от вас) всё выглядит не так плохо, вероятность восстановления представляется высокой, цена - наоборот.

    Сейчас лучше всего успокоиться, не пытаться мучать диск, не слушать советов из интернета и с Ютюба относительно всяких HDD Regenerator'ов, и тем более, самостоятельного вскрытия.
    Всем этим можно ухудшить ситуацию, или окончательно убить диск.
    В то время как у вас могут быть небольшие дефекты поверхности или нестабильная голова.

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

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

    Или может кто-то знает качественные сервисцентры в СПб?

    Смогу посоветовать наших коллег, или (совсем бессовестно) нас, после того, как общая картина станет немного яснее.
    Ответ написан
    4 комментария
  • Сколько ресурсов требуется для ASP.NET Core 5?

    yarosroman
    @yarosroman
    C# the best
    Комментировать
  • Как обработать данные в горутинах пакетами?

    Stasgar
    @Stasgar
    Обученная макака
    Есть паттерн Worker Pool, пример можете посмотреть здесь: https://gobyexample.com/worker-pools
    Ответ написан
    5 комментариев