• Как присваиваются порты клиентским сокетам?

    kagary06
    @kagary06
    Человек
    Во время соединения с сервером клиент будет брать один из свободных портов, которые ему выделит ОС.
    Диапазон динамически выделяемых портов в каждой системе разный, но в любом случае обычно разработчику особо нет необходимости контролировать какой порт будет выделен клиенту.
    Динамический порт
    Ответ написан
    Комментировать
  • Каков наиболее удачный вариант оформления внешнего вида текстового рогалика?

    kagary06
    @kagary06
    Человек
    Сундук                  $
    Дерево                  o
    Земля                   =
    Пустота                 space
    Бутылочка зелья         +
    Лист дерева             `
    Зуб животного           "
    Шлем                    ^
    Броня (на тело)         |
    Лестница                #


    Один из вариантов.
    Если есть возможность, то добавьте окраску простой цветовой палитрой.

    Так выбор символов упирается в шрифт, который вы будете использовать для своей игры, то по возможности выложите его на обзор.
    Я сейчас не могу найти "красивые" шрифты для Rogalike-like игр, поэтому возможно кто-то поделиться ссылками на них в этом посте.
    Ответ написан
    4 комментария
  • Как доработать запрос mysql чтоб он не смотрел на даты 0000-00-00?

    kagary06
    @kagary06
    Человек
    Если в вашем случае значение "0000-00-00" имеет некоторый логический смысл, то вы можете изменить вывод результата запроса для значения "0000-00-00" на символ бесконечности при помощи оператора CASE Документация

    Вот пример использования данного оператора на основе вашего запроса:
    SELECT CASE exp_date WHEN '0000-00-00' THEN '∞' ELSE exp_date END AS exp_date 
    FROM ? 
    WHERE lvl = 1


    Но будьте осторожны, так как согласно документации допустимыми значения для поля DATE являются значения от '1000-01-01' до '9999-12-31'.
    Вариант использования '0000-00-00' является исключением известным как "нулевая дата" и строго не рекомендуется к сознательному использованию в качестве допустимого значения.

    Так например все значения, которые при вставке имеют неправильный формат даты в случае установленного режима ALLOW_INVALID_DATES будет конвертировать все некорректные даты в значение "0000-00-00".
    Также мне известно, что в случае использования ODBC-драйвера, то он не поддерживает некорректные значения даты (только от '1000-01-01' до '9999-12-31') и может по-другомувести себя с такой ситуации.

    Вот выдержка из документации:

    Для столбцов DATE и DATETIME, объявленных как NOT NULL, вы можете найти специальную дату "0000-00-00", используя следующую инструкцию:

    SELECT * FROM tbl_name WHERE date_column IS NULL
    Это необходимо для работы некоторых приложений ODBC, поскольку ODBC не поддерживает значение даты 0000-00-00.


    Поэтому настоятельно рекомендую либо прислушайтесь к совету Иван,
    либо же выберите некоторые дату из допустимого диапазона значений, которая будет обозначать "бесконечность" или иной смысл для решения вашей задачи.
    Ответ написан
    Комментировать
  • Как установить pip на Windows 10 для Python 2.7?

    kagary06
    @kagary06
    Человек
    Если не хотите копаться в настройках окружения, то лучший вариант - это скачать установочный файл с сайта python.org и там выбрать при установке pip одним из компонентов.

    Если же у вас уже есть версия Python и нужно аккуратно и просто "накатить" на эту версию актуальную версию pip, то вам нужно скачать скрипт get-pip.py по ссылке. Сохраните его на диск и запустите при помощи python.exe get-pip.py.
    Ответ написан
    Комментировать
  • Какие есть сервисы для оплаты?

    kagary06
    @kagary06
    Человек
    В целом эта тема достаточно сложная, так как для поиска оптимальной платежной системы требуется учитывать большое количество факторов.
    Но если вы хотите просто и быстро добавить оплату на свой сайт, то посмотрите в сторону Яндекс.Кассы.
    Возможно это будет наиболее оптимальным вариантом для Вас.
    В качестве альтернативы можете посмотреть в сторону Qiwi-кошельков, но тут уже нужно будет либо самому разбираться каким способом внедрить данный метод оплаты на ваш сайт (зависит от технологического стека), либо обращаться к специалистам.
    Ответ написан
    Комментировать
  • Стоит ли выкладывать свое резюме на авито?

    kagary06
    @kagary06
    Человек
    Учитывайте, что когда вы выкладываете свою резюме на любую площадку, то его будут читать разные социальные группы людей и они по-разному будут оценивать ваши навыки и опыт.
    Поэтому я бы рекомендовал вам рассчитывать на какие-либо публичные площадки не ориентированные по вашему профилю, а искать вакансии на сайтах компаний с вашей специализацией и откликаться на них.
    Таким образом вы сами сможете оценить уровень требований компании к кандидату и условия работы.
    Если вы работаете в регионе, то вам наверное будет проще использовать ваше резюме и портфолио для поиска работы на фриланс-биржах или искать удаленную работу напрямую отправляя свои контакты компаниям, которые готовы к работе с удаленными сотрудниками.
    Ответ написан
    1 комментарий
  • Python portable на сервере. Реально или нет?

    kagary06
    @kagary06
    Человек
    Чисто теоретически все что вам необходимо - это актуальная версия совместимого с СPython интерпретатора и возможность либо через pip, либо вручную инсталлировать необходимую версию brypthon согласно инструкции.

    Прописывать какие-либо пути или нет будет зависеть от возможностей сборки интерпретатора.

    Но судя по тому, что данный стек технологий не сильно распространен и у вас отсутствуют права для стандартного пути установки python на сервер, то намного разумнее кажется вариант либо с получением прав на установку стандартного интерпретатора, либо же поиска другого сервера.
    Ответ написан
    Комментировать
  • Возможно ли в Python перегрузить двоеточие?

    kagary06
    @kagary06
    Человек
    Нет, не получится.
    Список специальных методов, которые возможны для перегрузки строго определен в документации.
    Среди них не упоминается возможность перегрузки оператора двоеточие (colon), так как такого оператора не существует на данный момент в Python, но при этом данный символ (colon) является частью синтаксиса для получения среза из списка, кортежа, строки и др.
    Пример:
    countries = ["USA", "France", "Canada", "China"]
    last_country = countries[-1:]

    А также данный символ является маркером для начала объявления блока кода в случаях использования if, while, for, def и class
    Пример:
    if expr:
       stmt

    while expr:
       stmt1
       stmt2

    for x in sequence:
       stmt1
       stmt2

    def my_function():
       stmt1
       stmt2

    class MyClass:
       pass
    Ответ написан
  • Правильно ли так очищать память?

    kagary06
    @kagary06
    Человек
    • Если нужно удалить переменную любого типа del variable
    • Если нужно очистить память, но при этом переменная продолжит существовать variable = None
    • Если нужно очистить память для списка/кортежа/множества, но при этом не изменять тип variable.clear()
    Ответ написан
    Комментировать
  • Можно ли сжать файл (таблицы в Ексель) в 10 раз в формате zip?

    kagary06
    @kagary06
    Человек
    Коэффициент сжатия зависит от данных, которые содержатся в этом Excel файле.
    Если там в основном содержаться текстовые данные, то вполне реально сжать такой файл в 10 раз, но это зависит от алгоритма и уровня сжатия.

    Вы можете самостоятельно скачать один из бесплатных архивиторов: www.peazip.org или https://www.7-zip.org/
    А также воспользоваться онлайн сервисами для сжатия файлов: https://convertio.co/ru/zip-converter/

    Когда вы выполните архивацию исходного Excel файла в архив, тогда и сможете узнать во сколько раз zip-алгоритм позволяет сжать те данные, которые содержатся в Excel файле.
    Ответ написан
    1 комментарий
  • Зачем сделали ISO, если есть ZIP?

    kagary06
    @kagary06
    Человек
    .iso файлы - это неформальный термин для обозначение образа оптического диска, который изначально позволял полноценно хранить файловую систему ISO9660, также извествную как CDFS (Compact Disc File System) в виде файла.
    В общем смысле позволяет хранить не только ISO9660, но и другой формат оптических дисков: UDF (ISO/IEC 13346), а такжке расширения формата ISO9660: Joilet, Rock Ridge, El Torito, Apple ISO9660 Extension.

    Саж же стандарт ISO9660 был принят в 1988 году и описывает универсальную файловую систему для хранения информации на цифровых носителях для совместимости между популярными операционными системами (Unix, Mac OS, Windows и др.), а также огромным количеством электронных устройств, которые могут считывать информацию с цифровых носителей (видео-, аудио- проигрыватели, игровые приставки, CD-плееры, ...).

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

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

    Создание же полноценной копии с одного носителя на другой носитель "на лету" подходила не для всех (так как требовалось иметь 2 устройства, одно из которых позволяло записывать информацию, а другое использовалось для чтения), а также часть программ для записи дисков на тот момент не поддерживало (технически или юридечески) создание копии 1 к 1, то со временем появилось програмное обеспечение, задача которого была в возможность снять "зеркальную" копию диска и записать в виде специального файла (так, чтобы не была утеряна вся служебная информация) на локальный компьютер.
    Таким образом появились самые первые форматы образов дисков (.iso, .img), либо же проприетарные .mdf (Alcohol 120%), .nrg (Nero), .uif (MagicISO), которые в самом начале своего появления решали проблему с копирование служебной информации и использовались как буферный формат при клонированни дисков с использованием 1 записывающего устройства.
    Но даже в таком виде диски все равно были более распостранены по сравнению с .iso файлами, так как были основным способом передачи информации в местах, где интернет был еще не доступен. (Хотя и были люди, которые использовал жесткие диски в качестве альтернативого способа передачи данных).
    Сами же .iso файлы первоначально не были настолько полезны, так как еще не было эмуляторов CD/DVD дисков, которые были бы интегрированы в файловую систему или же они стоили денег и имели свои собственные проприоретарные форматы, а поддержка ISO9660 была реализована частично или же не поддерживала всех возможностей формата.
    Только с увеличением объема жестких дисков и скорости работы в Интернете, а также появлением полноценных эмуляторов .iso файлов, наступило время, когда люди начали отказывать от цифровых дисков и хранить информацию на других носителях.
    Но так как разная информация, хранимая на тот момент на цифровых носителях, требовала либо трудозатрат по преобразованию (CD-Audio, DVD-Auido, видеодиски) или же эмуляцию присутствия лицензионного диска в дисководе (игры, специализированный софт),
    то большинство людей стало дублировать информацию с цифровых носителей в *.iso файлы, так как это было самым простым решением их проблем.

    Поэтому в момент появления *.iso файлы позволили решить актуальные на тот момент задачи (буферный файл, эмуляция специализированных дисков).
    Сейчас же *.iso файлы в осном использовазуются только в тех случаях, когда другие способы не могут полноценно помочь в решении поставленной задачи.
    Как альтернатива оптическим дискам к тому моменту пришли интернет и флеш-память.
    На замену же ISO9660 в 1995 году появилась файловая система UDF, которая смогла решить такие проблемы ISO9660, как возможно записи файлов более 4ГБ, а также перезаписи данных на цифровом носителе (и др.).

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

    ISZ - (он же ISO Zipped) уже специализированный формат, который представлеят собой сжатый ISO9660 при помощи zlib или bzip2. Его в основном использовали энтузиасты, чтобы сэкономить часть дискового простатранства там где не предполагалось частое использование *.iso и при этом они были готовы к неудобствам при работе с этим форматом в дальнейшем (время на распаковку, наличие специальных программ).

    DMG - это платформо-зависисый формат для хранения образов диска для операционной системы Mac OS.
    Кроме тех особенностей, которые давал ISO 9660 в нем также были возможность шифрования информация использование сжатия, а также были реазизованы возможности хранения специфичных для Mac OS метаданных о файлах.
    Сейчас данный формат в основном используется как средство распостранения архивов програмного обеспечения при помощи интернета.
    К тому же данный формат является "гибдирным" и поддерживает возможность хранения нескольких файловых систем (в том числе и ISO9660) в рамках одного *.dmg файла.
    Ответ написан
    1 комментарий
  • Возможна ли одновременная запись данных в один файл?

    kagary06
    @kagary06
    Человек
    Исходя из вопроса трудно понять каким образом запланирована работа вашего приложения и как построена обработка ошибок, но в любом случае Вам нужно каким-то образом помечать какой пользователь совершил добавление информации.

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

    Задумайтесь над тем, чтобы хранить данные во встроенных базах данных (sqlite, tinydb, CodernityDB) - для десктопных программ, или же реляционных базах данных (MySQL, PostgreSQL, MS SQL, ...) - для серверных решений.

    Если не использовать базы данных, то обычно после задач хранения данных следуют задачи по поиску и изменению данных и Вам самостоятельно нужно будет реализовывать необходимые для этого алгоритмы. А для этого требуется достаточно хорошо ознакомится с принципами хранения данных в файлах (Flat-file Database, File Storage и т.д.)
    К тому же нужно будет реализовывать механизм владениями файлами (блокировки, лимиты по времени и правам доступа), чтобы избежать "состояния гонки" (параллельная работа нескольких пользователей с одним файлом).
    Ответ написан
    Комментировать
  • Откуда сервисы накрутки ботами берут столько ботов?

    kagary06
    @kagary06
    Человек
    Часто встречаю на всяких досках объявлений продажу оптом SIM-карт украинских операторов, которые продаются после их использования для регистрации в популярных системах обмена сообщений (Telegram, Viber) и социальных сетях . В Украине SIM-карты продаются свободно.
    Также сейчас в интернете есть услуги по продаже виртуальных SIM карт, многие из которых используются в том числе и для временной регистрации ботов, особенно для сервисов, которые позволяют регистрировать несколько аккаунтов на 1 телефонный номер.
    Но это все будут чистые аккаунты, которые после регистрации нигде не использовались.
    Возможно кто-то создаст легенду для каждого аккаунта и сфабрикует персональные данных + фотографии при помощи некоторых алгоритмов, но многие таким не занимаются.

    Иногда такие аккаунты покупают компании для собственных маркетинговых акций или внутренних потребностей. Но зачастую этим пользуются не совсем честные люди.
    Чистые аккаунты без испорченной репутации будет стоить дорого.

    А так всегда будут вирусы, кейлоггеры, слабые пароли, слитые базы данных благодаря которым многие пользователи именно так и теряют свои аккаунты. Потом эта информация и будет где-то выставлена для продажи.
    Ответ написан
    Комментировать
  • Как сделать мост между Python и Java программами?

    kagary06
    @kagary06
    Человек
    Почему бы не воспользоваться вариантом с хранением результатов работы Python в каком-нибудь хранилище в оперативной памяти?
    Например Redis или Mongo (в режиме In-Memory Storage Engine).
    Ответ написан
    1 комментарий