В этом посте я писал почему работа с файлами и другими объектами, требующими гарантированного закрытия должна должна производиться через with. Однако кроме минуса в виде добавления в код лишнего уровеня вложенности with еще и решает только часть проблемы — если код обработки файла не локален (нужно возвращать дескриптор в вызывающий код или хранить неопределенное время) with не может помочь. И собственно никто вообще не может помочь — суровая реальность состоит в том, что python не гарантирует вызов деструктора объекта. Т.е. если вы работаете на CPython, и не создаете циклических ссылок, то за крайне редкими исключениями деструктор будет вызываться вовремя. Но если вы используете ironpython/jython/pypy то ситуация становится совсем печальна.
Архив автора: admin

Декорирование брюк принтом
В данном сезоне очень модный укороченный фасон брюк. И вы, наверняка, уже себе прикупили пару-две, а может быть и более таких же. То же самое можно сказать и о вышивке, и другого рода декорировании – такая отделка нынче как нельзя актуальна. Предлагаем превратить обычные штанишки из магазина в эксклюзивную вещь – украсить брюки принтом.
Перезагрузка зависшей виртуальной машины в ESXi
Давно использую виртуальную среду VmWare ESXi много где и под различные задачи. Столкнулся с проблемой на сервере, где число виртуальных машинок превышает 40 штук и перезагрузить сам host, ну никак нельзя.
Суть проблемы была примерно следующая: Читать
Качаем музыку из контатка
1)Открываем страницу аудиозаписей и пролистываем до самого конца
2)Если наш браузер Chrome то жмем F12 и нажимаем на 3ю строку в появившемся окошке, тегсворачивается, мы жмем по нему ПКМ и выбираем Copy as HTML (я думаю не составит труда получить код страницы после отработавших js в других браузерах)
3)Открываем наш любимый текстовый редактор(gedit например) и вставляем в него текст (тут молимся чтобы он переварил эпичную строку в пару миллионов символов. офисные редакторы в данном случае наверное не применимы), затем сохраняем все это дело в файл (audio.vk.txt в данном случае)
4)Открываем терминал и выполняем:
grep -o ‘http://cs.*.mp3’ audio2.vk.txt | grep -o ‘http://cs.*.mp3’ > mp3links.txt && wget -i mp3links.txt
автор идеи:Savalik
за что ему огромное спасибо!
Автор: r1za
Дата публикации: 2012-10-29T18:45:00.001-07:00
Создаём QR коды на Python (Перевод)
- python-qrcode на github
- pyqrcode на sourceforge и
- pyqrnative на Google code
Приступаем
Создаём QR коды
import os
import wx
try:
import qrcode
except ImportError:
qrcode = None
try:
import PyQRNative
except ImportError:
PyQRNative = None
########################################################################
class QRPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent=parent)
self.photo_max_size = 240
sp = wx.StandardPaths.Get()
self.defaultLocation = sp.GetDocumentsDir()
img = wx.EmptyImage(240,240)
self.imageCtrl = wx.StaticBitmap(self, wx.ID_ANY,
wx.BitmapFromImage(img))
qrDataLbl = wx.StaticText(self, label="Текст для перевода в QR код:")
self.qrDataTxt = wx.TextCtrl(self, value="http://www.mousevspython.com", size=(200,-1))
instructions = "Имя файла с QR кодом"
instructLbl = wx.StaticText(self, label=instructions)
self.qrPhotoTxt = wx.TextCtrl(self, size=(200,-1))
browseBtn = wx.Button(self, label='Изменить место для сохранения')
browseBtn.Bind(wx.EVT_BUTTON, self.onBrowse)
defLbl = "Сохраняется по умолчанию в: " + self.defaultLocation
self.defaultLocationLbl = wx.StaticText(self, label=defLbl)
qrcodeBtn = wx.Button(self, label="Создать QR при помощи qrcode")
qrcodeBtn.Bind(wx.EVT_BUTTON, self.onUseQrcode)
pyQRNativeBtn = wx.Button(self, label="Создать QR при помощи PyQRNative")
pyQRNativeBtn.Bind(wx.EVT_BUTTON, self.onUsePyQR)
# компоновщик
self.mainSizer = wx.BoxSizer(wx.VERTICAL)
qrDataSizer = wx.BoxSizer(wx.HORIZONTAL)
locationSizer = wx.BoxSizer(wx.HORIZONTAL)
qrBtnSizer = wx.BoxSizer(wx.VERTICAL)
qrDataSizer.Add(qrDataLbl, 0, wx.ALL, 5)
qrDataSizer.Add(self.qrDataTxt, 1, wx.ALL|wx.EXPAND, 5)
self.mainSizer.Add(wx.StaticLine(self, wx.ID_ANY),
0, wx.ALL|wx.EXPAND, 5)
self.mainSizer.Add(qrDataSizer, 0, wx.EXPAND)
self.mainSizer.Add(self.imageCtrl, 0, wx.ALL, 5)
locationSizer.Add(instructLbl, 0, wx.ALL, 5)
locationSizer.Add(self.qrPhotoTxt, 0, wx.ALL, 5)
locationSizer.Add(browseBtn, 0, wx.ALL, 5)
self.mainSizer.Add(locationSizer, 0, wx.ALL, 5)
self.mainSizer.Add(self.defaultLocationLbl, 0, wx.ALL, 5)
qrBtnSizer.Add(qrcodeBtn, 0, wx.ALL, 5)
qrBtnSizer.Add(pyQRNativeBtn, 0, wx.ALL, 5)
self.mainSizer.Add(qrBtnSizer, 0, wx.ALL|wx.CENTER, 10)
self.SetSizer(self.mainSizer)
self.Layout()
#----------------------------------------------------------------------
def onBrowse(self, event):
""""""
dlg = wx.DirDialog(self, "Выберите папку:",
style=wx.DD_DEFAULT_STYLE)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
self.defaultLocation = path
self.defaultLocationLbl.SetLabel("Сохраняем в: %s" % path)
dlg.Destroy()
#----------------------------------------------------------------------
def onUseQrcode(self, event):
"""
https://github.com/lincolnloop/python-qrcode
"""
qr = qrcode.QRCode(version=1, box_size=10, border=4)
qr.add_data(self.qrDataTxt.GetValue())
qr.make(fit=True)
x = qr.make_image()
qr_file = os.path.join(self.defaultLocation, self.qrPhotoTxt.GetValue() + ".jpg")
img_file = open(qr_file, 'wb')
x.save(img_file, 'JPEG')
img_file.close()
self.showQRCode(qr_file)
#----------------------------------------------------------------------
def onUsePyQR(self, event):
"""
http://code.google.com/p/pyqrnative/
"""
qr = PyQRNative.QRCode(20, PyQRNative.QRErrorCorrectLevel.L)
qr.addData(self.qrDataTxt.GetValue())
qr.make()
im = qr.makeImage()
qr_file = os.path.join(self.defaultLocation, self.qrPhotoTxt.GetValue() + ".jpg")
img_file = open(qr_file, 'wb')
im.save(img_file, 'JPEG')
img_file.close()
self.showQRCode(qr_file)
#----------------------------------------------------------------------
def showQRCode(self, filepath):
""""""
img = wx.Image(filepath, wx.BITMAP_TYPE_ANY)
# масштабируем изображение
W = img.GetWidth()
H = img.GetHeight()
if W > H:
NewW = self.photo_max_size
NewH = self.photo_max_size * H / W
else:
NewH = self.photo_max_size
NewW = self.photo_max_size * W / H
img = img.Scale(NewW,NewH)
self.imageCtrl.SetBitmap(wx.BitmapFromImage(img))
self.Refresh()
########################################################################
class QRFrame(wx.Frame):
""""""
#----------------------------------------------------------------------
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, title="QR Code Viewer", size=(550,500))
panel = QRPanel(self)
if __name__ == "__main__":
app = wx.App(False)
frame = QRFrame()
frame.Show()
app.MainLoop()
Обновление от 21/05/2012
import PyQRNative
def makeQR(data_string,path,level=1):
quality={1: PyQRNative.QRErrorCorrectLevel.L,
2: PyQRNative.QRErrorCorrectLevel.M,
3: PyQRNative.QRErrorCorrectLevel.Q,
4: PyQRNative.QRErrorCorrectLevel.H}
size=3
while 1:
try:
q = PyQRNative.QRCode(size,quality[level])
q.addData(data_string)
q.make()
im=q.makeImage()
im.save(path,format="png")
break
except TypeError:
size+=1
Исходник
Автор: Ishayahu Lastov
Говядина в томатах с вином
По этому рецепту получается безумно ароматный соус и мягкое мясо. Просто и вкусно!
Ингредиенты:
4 ст.л. несоленого сливочного масла
4 ст.л. оливкового масла
2 мелко порезанные моркови
2 мелко порезанные средние луковицы
500 г говяжья нога (голяшка)
1 зубчик чеснока
350 мл томатного пюре
120 мл белого сухого вина
Приготовление:
1. Разогрейте половину сливочного и оливкового масла в большой сковороде и обжарьте морковь и лук.
2. Сделайте небольшой надрез в мясе и вставьте туда зубчик чеснока.
3. Когда овощи немного поджарятся и приобретут цвет, добавьте голяшку и обжарьте ее, часто переворачивая.
4. Через несколько минут добавьте воды 250-500 мл, по необходимости, томатное пюре и оставшееся масло.
5. Варите на медленном огне до мягкости мяса, около 3 часов.
6. Добавьте вино, когда мясо будет готово.
Автор: Мирослав



