• Ошибка при выполнении команды zipsplit?

    neatsoft
    @neatsoft
    Life is too short for bad software
    man zipsplit

    BUGS
           Does not yet support large (> 2 GB) or split archives.
    Ответ написан
    1 комментарий
  • Как правильно примонтировать образа img в linux?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Ответ на вопрос из темы сообщения - "Как правильно примонтировать образ диска в Linux?"

    Установить kpartx:
    sudo apt-get update && sudo apt-get install kpartx

    Примонтировать:
    kpartx -av /path/to/the/image.img

    Отмонтировать:
    kpartx -dv /path/to/the/image.img
    Ответ написан
    Комментировать
  • Как удалить разбиение live-флешки?

    neatsoft
    @neatsoft
    Life is too short for bad software
    информация о размере и типе разделов - это всего лишь последовательность байт, которая записывается по определенному смещению на дисковое устройство (при использовании MBR - в начале, GPT - в начале и в конце диска)

    при должном желании и упорстве таблицу разделов можно создать даже с помощью hex-редактора, но лучше воспользоваться специально предназначенными для этого утилитами:

    определить имя устройства:
    lsblk
    отмонтировать разделы (sdX нужно заменить на реальное имя устройства):
    sudo umount /dev/sdX?
    создать новую таблицу разделов (sdX - имя устройства):
    sudo parted /dev/sdX mklabel msdos
    создать новый раздел:
    sudo parted /dev/sdX mkpart primary 0% 100%
    отформатировать раздел (вместо ext4 можно использовать fat или ntfs, если доступ к флэшке необходим и из других операционных систем):
    sudo mkfs.ext4 /dev/sdX1
    примонтировать новый раздел:
    sudo mount /dev/sdX1 /mnt
    сменить владельца файловой системы на текущего пользователя (для ext4):
    sudo chown $USER:$USER -R /mnt

    все эти операции можно сделать и с помощью стандартной утилиты с графическим интерфейсом Disks, последовательность действий та же: выбрать диск, создать новую таблицу разделов, создать раздел, отформатировать

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

    p.s. установочные флэшки лучше записывать с помощью dd, а не Startup Disk Creator (одна флэшка - один дистрибутив):
    sudo umount /dev/sdX?
    sudo parted /dev/sdX mklabel msdos
    sudo dd if=ubuntu-16.04-desktop-amd64.iso of=/dev/sdX bs=1M
    Ответ написан
    1 комментарий
  • Что новичку почитать по криптографии?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Cryptography I на Coursera: https://www.coursera.org/learn/crypto
    Отличный курс, великолепная подача материала.
    Ответ написан
    Комментировать
  • Как перенести юзера в другую группу через n-дней?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Канонический способ сделать это в джанго - добавление django-admin команды, и периодический запуск этой команды с помощью cron:
    Writing custom django-admin commands
    CronHowto
    Ответ написан
    Комментировать
  • Tornado на Python, для чего он нужен?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Его можно и нужно использовать параллельно с джанго.
    Чаты, уведомления, обновления страницы инициируемые на стороне сервера, long-polling, websockets, push-уведомления, и т. д. Все для чего плохо подходит традиционный MVC фрэймворк.

    "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling, WebSockets, and other applications that require a long-lived connection to each user."
    www.tornadoweb.org/en/stable
    Ответ написан
    Комментировать
  • Как заставить nginx выдавать не ответ php-fpm, а стандартную страницу 404, если php-fpm возвращает 404?

    neatsoft
    @neatsoft
    Life is too short for bad software
    В конфиг nginx нужно добавить:
    fastcgi_intercept_errors on;
    nginx.org/en/docs/http/ngx_http_fastcgi_module.htm...
    Ответ написан
    Комментировать
  • Как направить исходящие запросы через второй IP на сервере?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Нужно добавить соответствующий маршрут:
    ip route add 3.3.3.3 dev eth0 src 2.2.2.2 via 2.2.2.254

    askubuntu.com/a/252699

    Второй адрес лучше сконфигурировать не через post-up, а отдельным правилом:
    auto eth0
    iface eth0 inet static
      address 1.1.1.1
      netmask 255.255.255.0
      gateway 1.1.1.254
    
    auto eth0:1
    iface eth0:1 inet static
      address 2.2.2.2
      netmask 255.255.255.0
      up ip route add 3.3.3.3 dev eth0 src 2.2.2.2 via 2.2.2.254 || true
      down ip route del 3.3.3.3 || true

    wiki.debian.org/NetworkConfiguration#Legacy_method
    Ответ написан
    4 комментария
  • Какую IP камеру со спусковым механизмом выбрать?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Количество камер, качество картинки, бюджет?

    Если партия большая, можно заказать изготовление специализированного устройства, если нет, то придется конструировать из того что доступно в продаже:
    1. MR3020 + OpenWRT + вебкамера. Дополнительно могут потребоваться usb-хаб и флэшка. Недорого, но качество картинки будет так себе.
    2. Raspberry Pi + Raspicam. При необходимости можно повысить светосилу и резкость добавив объектив от камеры видеонаблюдения. Самый гибкий и беспроблемный вариант.
    3. DSLR (Canon/Nikon) + фикс (объектив) + gphoto2 + RPi или MR3020. Высокое качество картинки.

    Кнопки:
    В MR3020 есть встроенная кнопка, которую можно использовать для любых задач, в том числе для запуска пользовательских скриптов (необходимо уточнить ее ресурс). У RPi есть GPIO порты, к которым можно подключить любую кнопку. Альтернативные варианты: микроконтроллер, клавиатура, мышка, указка, гарнитура, и т.д.

    Свет:
    При хорошем освещении можно делать приемлемые снимки даже простой камерой, а при плохом может спасовать и зеркалка. Поэтому желательно установить дополнительные лампы непосредственно над местом съемки. Свет нужен яркий, но мягкий, лампы должны быть с хорошим CRI. Можно управлять светом программно - включать его только на время съемки (с помощью GPIO через транзистор управлять релюшкой, к которой подключить лампы).

    Отправка на сервер:
    Скрипт на bash или python. При нажатии на кнопку записывать кадр с камеры во временный файл, запускать rsync для его копирования на сервер, удалять файл.
    Ответ написан
    Комментировать
  • Какой дистрибутив подойдет к Asus X550CC?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Отключите дискретную видеокарту в биосе, если есть такая возможность, и ставьте 14.04. Для тех кто будет читать этот ответ позже мая 2016 года - ставьте 16.04. Альтернативный вариант - начните освоение линукса в виртуалке, там ваше реальное железо особой роли играть не будет.
    Почему ubuntu а не centos? Официальный репозиторий гораздо больше, не придется ставить софт из левых источников. А доверие к источникам программного обеспечения - это краеугольный камень системы безопасности.
    На будущее - не покупайте ноутбуки с дискретными видеокартами. Интегрированного видео от интел и на десктопе для большинства применений вполне достаточно, а для ноутбука это вообще единственный разумный выбор. Зачем вам внутри такого компактного корпуса дополнительный утюг, к которому даже нормальных opensource драйверов нет?
    ps. Интел срочно требуется конкурент - отсутствие соперничества всегда приводит к деградации. Может хоть амд нас в этом году наконец порадует?
    Ответ написан
  • Какими способами/приемами вы пользовались чтобы получить свой первый заказ на фриланс бирже?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Дикая конкуренция на биржах - миф, многие проекты так и остаются без исполнителя. На прошлой неделе срочно нужен был фронтендер на небольшую задачу с нормальным бюджетом (5 дней - $1000) и перспективой работы на постоянных проектах - найти фрилансера так и не удалось. Заказчик из Европы, адекватный, платежеспособный. Из 30 заявок не оказалось ни одного вменяемого предложения - одни индусы (которые по опыту заказчика на таких проектах лажают в 100% случаев).

    Вещи, на которые необходимо обращать внимание на начальном этапе:
    1. не стоит пристально изучать все описания проектов - установите собственные критерии, и выбирайте только те что нравятся;
    2. описание понравившегося проекта нужно читать внимательно, а в заявке излагать свое понимание задачи (пересказ) и план ее решения;
    3. ставьте реальные сроки захода во фриланс - от 3-х до 6-ти месяцев (такой промежуток времени требуется чтобы детально во всем разобраться и наработать рейтинг);
    4. обещайте меньше, делайте больше;
    5. и самый главный совет - начните прямо сейчас! не нужно бросаться учить английский язык или осваивать модные технологии - все что нужно само придет в процессе работы. Большинству заказчиков совершенно налевать сколько вы делаете ошибок в словах, владеете ли граматикой, и применяете ли паттерны проектирования. Главное - умение эффективно решать поставленные задачи - быстро, и без чрезмерного усложнения.

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

    pps. Ищу опытного фронтендера для совместной работы над интересными проектами. Сам занимаюсь бэкэндом, базами данных, линуксом, архитектурой.
    Ответ написан
    9 комментариев
  • Как правильно настроить media-root?

    neatsoft
    @neatsoft
    Life is too short for bad software
    MYSITE_URL = '<abs_path>/domains/mysite.ru'
    STATIC_ROOT = os.path.join(MYSITE_URL, 'static')
    MEDIA_ROOT = os.path.join(MYSITE_URL, 'media')

    Но для production это не подходит. Каталог static нужно раздавать с помощью nginx (предварительно скомпоновав его с помощью python manage.py collectstatic), a media выносить на отдельный домен (для предотвращения XSS уязвимостей).
    Ответ написан
    3 комментария
  • На чем писать новостные/информационно-развлекательный порталы? CMS или на голом фреймворке?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Django.
    Зародился в недрах новостного сайта, зрелый, позволяет очень быстро создавать отличные продукты.
    "The web framework for perfectionists with deadlines."
    Админка - "бесплатно" (автоматически создается при определении модели).
    Ответ написан
    Комментировать
  • Как лучше хранить огромное число небольших файлов?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Классический вариант - считать hash (md5, sha1, или sha256) для каждого файла при добавлении, в базе данных хранить хэш - имя фала - размер (опционально), а для записи на диск использовать следующий путь:
    ./e3/b0/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    первый уровень вложенности - первые два символа хэша в шестнадцатеричном представлении, второй уровень - третий и четвертый символ, имя файла - хэш; количество уровней вложенности можно увеличить, если файлов очень много.

    В качестве альтернативного варианта рассмотрите возможность хранения этих объектов в базе данных. Обычно это не лучшая идея, но в вашем случае такой вариант может оказаться предпочтительным. Если на каждой странице содержится множество маленьких объектов, можно уменьшить количество запросов к серверу упаковывая их все в один ajax ответ на стороне сервера (получая содержимое из базы данных), и распаковывая с помощью javascript на клиенте. В некоторых случаях это может приводить к увеличению быстродействия (необходимо проверять на реальных данных).
    Ответ написан
    4 комментария
  • Как смонтировать жесткий диск в папку сайта /web/localhost/videos?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Для того чтобы диск автоматически монтировался в указанный каталог при каждой перезагрузке, необходимо отредактировать файл /etc/fstab.

    Сначала выясняем тип раздела, и его UUID (уникальный идентификатор):
    sudo blkid /dev/_disk_
    (_disk_ - дескриптор раздела, который необходимо монтировать, например - sda1)

    После чего добавляем в /etc/fstab следующую строку (sudo nano /etc/fstab, Ctrl+O, Ctrl+X):
    UUID=_uuid_ /web/localhost/videos _type_ defaults 0 2

    где _uuid_ - идентификатор (например, 7728219a-a119-43ee-b2a0-25b036d80e11), а _type_ - тип раздела (например, ext4)

    Для проверки изменений без перезагрузки необходимо выполнить:
    sudo mount -a

    Более подробно:
    man fstab
    man blkid
    man mount
    Ответ написан
    Комментировать
  • Какие сайты для фриланса электронщиков?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Пару раз брал заказы на разработку простых схем и создание прошивок для ATmega на www.freelancer.com - понравилось. Единственная сложность - удаленная отладка: пока объяснишь что и куда нужно подключить, пока заказчик это сделает, пока опишет результат...
    Поискать проекты можно здесь: Electrical Engineering, PCB Layout, Electronics, M....
    Ответ написан
    Комментировать
  • За какое время можно начально изучить laravel 5 чтобы переписать на нем небольшой сайт?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Обычно использую Django, но недавно один из заказчиков настоял на Laravel. Фрэймворк неплохой, документация хорошая, на изучение ушло около недели. Лучшая стратегия освоения фрэймворка, с моей точки зрения - выполнить реальный заказ, удалить все исходники, выполнить еще раз начисто. В этом случае и обучение много времени не займет, и за качество стыдно не будет.
    Ответ написан
    Комментировать