
Zart
13.05.2017
12:45:24
для привязки обычно берут серийник материнки
удобен тем, что пользователь может апгрейдить комп сколько влезет, но пока материнка не поменялась комп тот же

Alexey
13.05.2017
12:45:32

Stanislav
13.05.2017
12:45:36

Zart
13.05.2017
12:45:51
правда виртуалки позволяют подсунуть любой серийник 8))))

Google

Alexey
13.05.2017
12:46:22
Детект виртуалок надо сразу.

Stanislav
13.05.2017
12:46:47

Ruslan
13.05.2017
12:47:27
дрейф времени по ntp


Zart
13.05.2017
12:48:09
[root@aura id]# grep '' -r .
./product_name:All Series
./product_uuid:009B202B-DAD7-DD11-97D7-E03F490FC62B
./board_name:Z87-K
./board_asset_tag:To be filled by O.E.M.
./power/control:auto
./power/async:disabled
./power/runtime_enabled:disabled
./power/runtime_active_kids:0
./power/runtime_active_time:0
grep: ./power/autosuspend_delay_ms: Input/output error
./power/runtime_status:unsupported
./power/runtime_usage:0
./power/runtime_suspended_time:0
./chassis_serial:Chassis Serial Number
./product_version:System Version
./chassis_vendor:Chassis Manufacture
./modalias:dmi:bvnAmericanMegatrendsInc.:bvr0903:bd10/25/2013:svnASUS:pnAllSeries:pvrSystemVersion:rvnASUSTeKCOMPUTERINC.:rnZ87-K:rvrRevX.0x:cvnChassisManufacture:ct3:cvrChassisVersion:
./chassis_version:Chassis Version
./bios_date:10/25/2013
./bios_version:0903
./product_serial:System Serial Number
./sys_vendor:ASUS
./bios_vendor:American Megatrends Inc.
./board_serial:131219366004410
./uevent:MODALIAS=dmi:bvnAmericanMegatrendsInc.:bvr0903:bd10/25/2013:svnASUS:pnAllSeries:pvrSystemVersion:rvnASUSTeKCOMPUTERINC.:rnZ87-K:rvrRevX.0x:cvnChassisManufacture:ct3:cvrChassisVersion:
./chassis_asset_tag:Asset-1234567890
./chassis_type:3
./board_vendor:ASUSTeK COMPUTER INC.
./board_version:Rev X.0x
та же инфа в винде:
D:\>wmic baseboard get /value
Caption=Base Board
ConfigOptions={"To Be Filled By O.E.M."}
CreationClassName=Win32_BaseBoard
Depth=
Description=Base Board
Height=
HostingBoard=TRUE
HotSwappable=FALSE
InstallDate=
Manufacturer=ASUSTeK COMPUTER INC.
Model=
Name=Base Board
OtherIdentifyingInfo=
PartNumber=
PoweredOn=TRUE
Product=P8Z77-V DELUXE
Removable=FALSE
Replaceable=TRUE
RequirementsDescription=
RequiresDaughterBoard=FALSE
SerialNumber=MT7024K03801613
SKU=
SlotLayout=
SpecialRequirements=
Status=OK
Tag=Base Board
Version=Rev 1.xx
Weight=
Width=


Stanislav
13.05.2017
13:11:30


Zart
13.05.2017
13:11:49
нет, оба физические

Stanislav
13.05.2017
13:11:50
Или это две разные ос
Ну у линукса лучше

Zart
13.05.2017
13:12:04
я ж не ребутал одну машину в разные ос

Stanislav
13.05.2017
13:12:04
Больше инфы

Google

Zart
13.05.2017
13:12:08
неа
у линукса в том каталоге несколько категорий
они все и из винды дёргаются
тот путь в /sys/ доступен лишь руту. dmidecode утилита умеет дергать эту же инфу и обычным юзерам, можно порыть откуда она тащит
вмик на винде был для примера, так-то там надо по вми это дергать

Stanislav
13.05.2017
13:13:36

Zart
13.05.2017
13:14:17
а надо?

Anatoly
13.05.2017
13:14:36

Stanislav
13.05.2017
13:15:16

Dmitry
13.05.2017
13:16:21
подсмотри в systemd-detect-virt или virt-what или ебись с dmidecode -s system-product-name

Zart
13.05.2017
13:16:30
я смотрел те детект вирты
они сравнительно убоги и при большом желании обходятся

Dmitry
13.05.2017
13:16:53
да это тупо обертки, чтобы самому стопицот ифов не писать вокруг dmidecode

Zart
13.05.2017
13:16:57
ну да
собсно они первую пару таблиц дми и декодят

Dmitry
13.05.2017
13:17:26
а то там начинается
VMware Workstation
root@router:~# dmidecode -s system-product-name
VMware Virtual Platform
VirtualBox
root@router:~# dmidecode -s system-product-name
VirtualBox
Qemu with KVM
root@router:~# dmidecode -s system-product-name
KVM
Qemu (emulated)
root@router:~# dmidecode -s system-product-name
Bochs
Microsoft VirtualPC
root@router:~# dmidecode | egrep -i 'manufacturer|product'
Manufacturer: Microsoft Corporation
Product Name: Virtual Machine
Virtuozzo
root@router:~# dmidecode
/dev/mem: Permission denied
Xen
root@router:~# dmidecode | grep -i domU
Product Name: HVM domU

Zart
13.05.2017
13:17:26
в куему уже есть готовые ключи, позволяющие туда срать что угодно 8)

Stanislav
13.05.2017
13:17:35
Окей, спасибо
Буду держать вас в курсе своих начинаний, лол

Dmitry
13.05.2017
13:17:58

Google

Zart
13.05.2017
13:18:22
гиперв к примеру заполняет поля как "Vendor: Microsoft, Board: Virtual Machine"
мне понравилось как это выглядит в дмесг и для линупсовых виртуалок я задал "Linux Virtual Machine" вместо унылого "KVM"

Dmitry
13.05.2017
13:18:23
но примерно для 99% кулхацкеров сойдет

Zart
13.05.2017
13:18:45
virt-detect that, bitches

Dmitry
13.05.2017
13:19:09
еще
lshw -class system
можно
там тоже будет подходящее говно. но берущееся оттуда же (из тех же ключей qemu) :D

Zart
13.05.2017
13:20:47
гость в квм без модификаций
$ dmesg | grep DMI:
[ 0.000000] DMI: Bochs Bochs, BIOS Bochs 01/01/2011
с заданной инфой в дми:
# dmesg | grep DMI:
[ 0.000000] DMI: Linux Virtual Machine, BIOS 0.0.0 02/06/2015
няшно же
на бегиннерсах зашла речь про удаление лямбд из языка, поднял пеп 3099
чота просматриваю линки и проигрываю:
I propose that strings (unicode/text) shouldn't be iterable. Seeing this:
<ul>
<li> i
<li> t
<li> e
<li> m
<li>
<li> 1
</ul>
a few too many times... it's annoying. Instead, I propose that strings
get a list-like view on their characters. Oh synergy!

Eugine
13.05.2017
13:41:59
зашквар

Anatoly
13.05.2017
13:50:59
вот если библиотека называется NEST, пакетный менеджер складывает это в папку nest, а файл называется Nest.dll, то на винде всё хорошо.

Eugine
13.05.2017
13:51:19
In [1]: from __future__ import braces
File "<ipython-input-1-2aebb3fc8ecf>", line 1
from __future__ import braces
SyntaxError: not a chance
хех

Anatoly
13.05.2017
13:51:28
как только мы там переползаем в линуксы - ебать конём разработчиков библиотеки хочется

derevotyan
13.05.2017
14:53:18
Очередная версия раскладывателя-на-множители, теперь с лонг-поллингом! (питон уже не совсем чистый: полтора десятка строчек жаваскрипта) https://pastebin.com/xgHRFdKK
На локалхосте все работает как надо, а вот на хероку ( https://lit-hamlet-91101.herokuapp.com ) - нет, вместо этого спамит реквестами для лонг-поллинга с максимальной возможной частотой (в норме новый должен отправляться только после того, как на старый отвечено)
Так, первая херокуособенность: когда я назначала реквесту хедер, на локалхост он приходил с маленькой буквы, а на хероку с большой. Вторая херокуособенность: заголовки и содержание пост-реквеста приходят двумя отдельными сообщениями.

Zart
13.05.2017
15:51:14
ты сейчас реквест с респонсом не путаешь?

derevotyan
13.05.2017
15:51:42
реквест - от браузера, респонс - от сервера.
Иначе приходят именно запросы от браузера, от сервера-то я строкой посылаю.

Zart
13.05.2017
15:52:28
на хероку твоё приложение живёт за фронтенд веб-сервером, который занимается санацией запросов
на локалхосте во время отладки какое говно пошлёшь - такое и прилетит

Google

Zart
13.05.2017
15:53:10
регистр заголовков тебя волновать вообще не должен

derevotyan
13.05.2017
15:55:39

Zart
13.05.2017
15:56:04
фласк?

derevotyan
13.05.2017
15:56:37
Это то самое задание на чистый питон, какой фласк?

Zart
13.05.2017
15:56:49
ы
значит тебе придётся либо рисовать свой реквест класс, как в других фреймворках
либо взять из стдлиба класс для обёртки заголовков типа https://docs.python.org/3/library/http.client.html#httpmessage-objects
ну или рисовать цикл с .lower()/.upper() на худой конец

Dmitry
13.05.2017
16:01:33

Zart
13.05.2017
16:01:42
это уже детали

Admin
ERROR: S client not available

derevotyan
13.05.2017
16:09:26
ну или рисовать цикл с .lower()/.upper() на худой конец
Самое простое, чо. С классами из стдлиба та проблема, что в них предполагается, что ты получаешь реквест как объект, а у меня tcp-сервер, я получаю и посылаю байтовые строки. Способов взять строку реквеста и завернуть ее в объект я не нашла (возможно, плохо искала).

Zart
13.05.2017
16:10:18
у этих классов есть классметод для конструирования из байтов
или вру, гм

vlade11115
13.05.2017
16:43:31
Нормально на итератор так проверять?
if iter(data) is data:
data = list(data)

Zart
13.05.2017
16:44:35
эм... чо
что именно ты хочешь проверить? что data может быть итерирована?

vlade11115
13.05.2017
16:46:34
Я просто читаю код библиотеки статистики что ты выше скинул, а там такое несколько раз делают. Например
https://github.com/python/cpython/blob/3.6/Lib/statistics.py#L584

Zart
13.05.2017
16:46:41
проверка iter(x) is x неверна в корне

vlade11115
13.05.2017
16:46:57

Google

Zart
13.05.2017
16:47:17
это даст тру лишь когда def __iter__(self): return self
т.е. когда объект сам себе итератор, как файл, например
похоже что этой проверкой они создают копию для подобных итераблов

Alex
13.05.2017
16:48:34

Zart
13.05.2017
16:48:48

vlade11115
13.05.2017
16:48:59

Zart
13.05.2017
16:49:13
в общем это проверка не на итерабл
а на то, что итерабл возвращает раздельный итератор

vlade11115
13.05.2017
16:49:43

Zart
13.05.2017
16:50:12
чтобы убедится что возвращает сам себя

Alex
13.05.2017
16:50:19
import collections
def is_iter(data):
return isinstance(data, collections.Iterable)
(не проверял)

Zart
13.05.2017
16:50:21
а не копию себя

Alex
13.05.2017
16:51:02

Zart
13.05.2017
16:51:08
для поддержки более древних питонов придётся скорее всего iter(x) в трайблок совать

vlade11115
13.05.2017
16:51:48

Zart
13.05.2017
16:51:55
а вот эти вот проверки isinstance(x, str) - главная причина по которой всякие фласки так тормозят
в тройке добавили

Alex
13.05.2017
16:52:59

vlade11115
13.05.2017
16:54:51

Zart
13.05.2017
16:56:17
>>> import collections
>>> class Iterable:
... def __getitem__(self, key):
... if key > 5: raise IndexError(key)
... return 10+key
...
>>> i = Iterable()
>>> hasattr(i, '__iter__')
False
>>> isinstance(i, collections.Iterable)
False
>>> iter(i)
<iterator object at 0x012ECF70>
>>> list(i)
[10, 11, 12, 13, 14, 15]
>>> collections.Iterable.register(Iterable)
<class '__main__.Iterable'>
>>> isinstance(i, collections.Iterable)
True