С праздником, погроммисты
Всех коллег с 256 днем в году. Меньше багов, меньше лагов, больше денег и всего-всего.
Всех коллег с 256 днем в году. Меньше багов, меньше лагов, больше денег и всего-всего.
И где новость на ЛОРе? На опеннете уже была, Гвидо утром в твиттере отписался.
Ждем ебилдов...
Добавил новую фукнциональность - при запуске с ключом --not-installed теперь удаляются все distfiles для неустановленных пакетов.
Сделано для того, чтобы не хранить несколько версий одного пакета.
Вдруг, кто-то еще кроме меня пользуется. :)
Есть такой код:
async def foo():
print(1)
await one()
print(2)
await two()
print(3)
await asyncio.wait([foo(), foo(), foo()])
Как добиться того, чтобы функция foo выполнялась строго последовательно одним «потоком»? То есть, в консоль должно вывести:
1
2
3
1
2
3
1
2
3
Есть монга, в которую пишет сервис на go. В каждом документе есть поле -
m["ReceivedTimestamp"] = time.Now().UTC()
Делаю выборку из пайтона:
from pymongo import MongoClient
import datetime
r = next(collection.find(...).sort(...).limit(1))
dt: datetime.datetime = r['ReceivedTimestamp']
print(dt, dt.timestamp())
Выводит:
2018-01-19 07:06:43.453000 1516334803.453
Но 1516334803 это 4 утра в utc. Как правильно сконвертировать?
Переезжал на другой профиль, пересобирал sys-libs/glibc-2.26-r5 и при установке получил:
>>> needed sym /lib32/libm.so.6
>>> needed obj /lib32/libpthread-2.26.so
>>> needed sym /lib32/libpthread.so.0
>>> needed obj /lib32/librt-2.26.so
>>> needed sym /lib32/librt.so.1
>>> Safely unmerging already-installed instance...
[Errno 80] Accessing a corrupted shared library: b'/bin/bash':
/bin/bash -c /usr/lib/portage/python3.6/ebuild.sh clean
Traceback (most recent call last):
File "/usr/lib64/python3.6/site-packages/portage/dbapi/vartree.py", line 2127, in unmerge
preserve_paths=preserve_paths)
File "/usr/lib64/python3.6/site-packages/portage/dbapi/vartree.py", line 1935, in _prune_plib_registry
include_file=needed, preserve_paths=preserve_paths)
File "/usr/lib64/python3.6/site-packages/portage/dbapi/vartree.py", line 3074, in _linkmap_rebuild
self.vartree.dbapi._linkmap.rebuild(**kwargs)
File "/usr/lib64/python3.6/site-packages/portage/util/_dyn_libs/LinkageMapELF.py", line 275, in rebuild
proc = subprocess.Popen(args, stdout=subprocess.PIPE)
File "/usr/lib64/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "/usr/lib64/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 80] Accessing a corrupted shared library: '/usr/bin/scanelf'
During handling of the above exception, another exception occurred:
Теперь ничего не запускается, говорит:
└─[127] <> uname
zsh: accessing a corrupted shared library: uname
Что делать?
Утро не задалось - собака подняла в 6 утра, потом коты - то их покорми, то выпусти на улицу, то обратно запусти. Потом был октябрьский холодный ветер, толкучка в автобусе, пробка, опять ветер. И вот, прихожу на работу, наливаю кружку кофе, включаю ноутбук, радостно ввожу в консоли sudo eix-sync и....
/usr/bin/eix-sync: line 22: ReadFunctions: command not found
/usr/bin/eix-sync: line 24: ReadVar: command not found
/usr/bin/eix-sync: line 25: ReadVar: command not found
/usr/bin/eix-sync: line 26: ReadVar: command not found
/usr/bin/eix-sync: line 27: ReadVar: command not found
/usr/bin/eix-sync: line 28: local_portage_configroot: unbound variable
Вот что теперь делать? Даже работать не хочется, а задач уйма.
Хочется заиметь дневник с такой функциональностью: есть список определенных действий (набухался, занялся пробежкой, вынес мусор, помог бабушке перейти дорогу, пнул кота) и календарь. В календаре можно проставлять для дня какое-то количество этих действий (желательно, чтобы это было в виде иконок), причем указывая дополнительные параметры (набухался 1 раз, пнул кота 3 раза). Впоследствии можно просматривать по каждому действию историю.
Существует подобное решение?
Правильно ли делать так в пайтоне:
def eventFilter(self, obj: QObject, event: QEvent):
if event.type() == QEvent.Drop:
event: QDropEvent = event
print(event.pos())
Делаю так чтобы PyCharm корректно автодополнял тип и не подчеркивал обращения к неизвестным полям. Может есть более ТРУ стиль?
Написал ebuild, скопировал /usr/portage к себе в хомяк, добавил туда этот ebuild, прогнал repoman full и сделал repoman -dx commit. Что делать дальше? Как отправить свои изменения? Нагуглить не получается.
Сделал по мануалу setup.py, зарегался на pypi.python.org, зааплоадил туда PKG_INFO, но когда делаю python setup.py register, то получаю в ответ:
running register
running check
Registering dfclean to https://upload.pypi.org/legacy/
Server response (500): <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)>
В чем проблема?
from distutils.core import setup
with open('README.md') as file:
long_description = file.read()
setup(
name='dfclean',
version='0.0.0.1',
packages=['dfclean'],
url='https://gitlab.com/panter_dsd/distfilescleaner',
license='GPLv3',
author='PanteR',
author_email='panter.dsd@gmail.com',
description='Clean up old distfiles in Gentoo',
long_description=long_description,
classifiers=[
'Development Status :: 3 - Alpha',
'Programming Language :: Python :: 4.6',
]
)
cat ~/.pypirc
[distutils]
index-servers = pypi
[pypi]
repository=https://pypi.python.org/pypi
username=panter_dsd
password=*********
[server-login]
username:panter_dsd
password:*********
OS: gentoo
Python: 3.5, 3.6
Еще почему-то не могу twine установить через pip, выдает:
sudo pip install twine
ERROR: (Gentoo) Please run pip with the --user option to avoid breaking python-exec
Гугл не помог.
class Request(object):
def __init__(self, url: str, host: str, port: int, session: ClientSession, data: bytes,
ids_to_remove: list, callback):
super().__init__()
self.__url = url
self.__host = host
self.__port = port
self.__session = session
self.__data = data
self.__ids_to_remove = ids_to_remove
self.__callback = callback
async def send(self):
try:
async with self.__session.post('http://{}:{}{}'.format(self.__host, self.__port, self.__url),
data=self.__data) as r:
if r.status == int(HTTPStatus.OK):
await self.__callback(self.__ids_to_remove)
except Exception as e:
print(e)
def ids_to_remove(self):
return self.__ids_to_remove
class ConnectionsPool(object):
def __init__(self, host: str, port: int, max_connections: int, remove_ids_callback):
super().__init__()
self.__max_connections = max_connections
self.__host = host
self.__port = port
self.__remove_ids_callback = remove_ids_callback
self.__sending_futures = []
self.__session = ClientSession(connector=TCPConnector(verify_ssl=False, limit=max_connections))
async def send(self, url: str, data: bytes, ids_to_remove: List):
if len(self.__sending_futures) > self.__max_connections:
await asyncio.wait(self.__sending_futures, return_when=asyncio.FIRST_COMPLETED)
request = Request(url, self.__host, self.__port, self.__session, data, ids_to_remove,
self.__remove_ids_callback)
future = asyncio.ensure_future(request.send())
future.request = request
future.add_done_callback(self.future_done)
self.__sending_futures.append(future)
def future_done(self, future):
self.__sending_futures.remove(future)
def ids_to_remove(self):
result = []
for f in self.__sending_futures:
result += f.request.ids_to_remove()
return result
root: 'Task' object has no attribute 'ids_to_remove' (abstract_retranslator.py:31)
Traceback (most recent call last):
File "/srv/backend/common/retranslation/abstract_retranslator.py", line 29, in retranslate
await self._retranslate()
File "/srv/backend/common/retranslation/http_retranslator.py", line 135, in _retranslate
async for event in self.events(connections_pool.ids_to_remove()):
File "/srv/backend/common/retranslation/http_retranslator.py", line 70, in ids_to_remove
result += f.request.ids_to_remove()
AttributeError: 'Task' object has no attribute 'ids_to_remove'
Как f.request может стать Task? Или я неправильно готовлю асинхронный код на Пайтоне?
python 3.5
Сейчас вот такой код используется:
from aiohttp import ClientSession
async def post(semaphore: asyncio.Semaphore, session: ClientSession, url: str, data: str):
async with semaphore:
try:
async with session.post(url, data=data) as r:
response_data = await r.read()
class Response(object):
def __init__(self, status_code, text):
self.status_code = status_code
self.text = text
return Response(r.status, response_data.decode('utf-8'))
except Exception as e:
print(e)
return None
...................................
async with ClientSession() as session:
semaphore = asyncio.Semaphore(256)
coros = [post(semaphore, session, r[0], r[1]) for r in requests]
requests = await asyncio.gather(*coros)
Но он показывает плохие результаты. Как можно ускорить и правильно ли я вообще делаю? Мне надо отправлять http запросы на сервер, но не более, чем 256 одновременно.
Всем трям. Пытаюсь на торнадо научиться отдавать видео файл. Проверяю в хроме. Если отдаю файл целиком, то все работает, но браузер кидает мне 2 реквеста, желая работать по технологии partial content https://ru.wikipedia.org/wiki/HTTP#.D0.94.D0.BE.D0...BA.D0.B0.D1.87.D0.B8.D0....
Почитал, запилил реализацию у себя, но браузер кидает теперь 2-3 запроса и видео не показывает. Вот кот http://pastebin.com/DvsPmevc
В чем может быть проблема?
Если надо, могу скопипастить реквест/респонз.
Кто сможет приютить красноглазого программера-гентушника на одну ночь в МСК? Еду встретиться с потенциальным заказчиком. Думал, что остановлюсь у одногруппника, но он, скотина такая, пошел в запой по всей России. Хостелы не рассматриваю, ибо с ипотекой и тремя кредитами денег немного не хватает. Можно и в аэропорту заночевать, но получается сутки, которые можно потратить на общение и бухло (или работу за ноутом), пропадают. В этих ваших МСКах был всего 2 раза: один раз ребенком, второй раз пьяным на своей свадьбе, поэтому на местности не ориентируюсь. Прошел Питер, так что с метро знаком. Всякие Мтыщи не предлагать, как магнит притягиваю гопоту. Прибывать и убывать буду самолетами. Если есть мелкие спиногрызы, тоже не нужно, неделю назад только отошел от ОРВИ, не хочу заразить (у самого 4-х летний).
Проект не трогал, в CMakeLists.txt:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O2 -Wall -Wextra -pedantic")
Вчера собиралось, сегодня не собирается:
error: ‘make_unique’ is not a member of ‘std’
internalData_ = std::make_unique<InternalData> ();
Причем код 11 стандарта работает, а 14 нет. __cplusplus имеет значение 201103L, а должен быть больше. cmake не обновлял. Единственное, что обновлялось - Qt.
GCC:
gcc-config -l
[1] x86_64-pc-linux-gnu-5.4.0 *
Пробовал выставить -std=c++17 - не работает.
Отдельно взятый пример, скомпиленный g++ -std=c++14 main.cpp компилится, отсюда вывод, что дело таки в cmake.
Помогите, а то рабочий день проходит впустую.
Засовываю в докер свою прогу, последняя строка Dockerfile
CMD /path/to/prog --config config.ini --name {NAME}
Мне нужно запустить несколько инстансов этого контейнера, но с разными {NAME}, как это правильно сделать? Смотрел ARG и ENV, но они дейстуют на build, а как правильно с run это делать?
Встала задача стримить видео по http. На входе есть поток изображений в jpeg. Сейчас реализовал через mjpeg, но канал не выдерживает, получается по 6 Мб/с. Решение либо сильнее сжимать, но тогда качество потеряется, либо использовать что-то другое. Вроде, h.264 применяют, но что-то не смог нагуглить реализации на c++.
Кто сталкивался и может помочь?
Сегодня случайно узнал, что лурка доступна не только через тор. Это когда ее успели разбанить и за что?
Установил memtest86+, обновил grub. При перезапуске в меню появился пункт memtest, при выборе которого виден лишь черный экран. Если нажать Esc, происходит перезагрузка. ЧЯДНТ? Ноутбук ASUS, i5, встроенная видюха.
следующие → |