const Foo = ({ dispatch }) => {
const handler = useCallback(() => {
dispatch(action());
}, []);
return (
<Bar onClick={handler} />
);
};
export default connect()(Foo);
const Foo = () => {
const dispatch = useDispatch();
const handler = useCallback(() => {
dispatch(action());
}, []);
return (
<Bar onClick={handler} />
);
};
export default Foo;
const Foo = ({ value }) => {
return (
<Bar value={value} />
);
};
const mapStateToProps = state => ({
value: state.value,
});
export default connect(mapStateToProps)(Foo);
const Foo = () => {
const value = useSelector(state => state.value);
return (
<Bar value={value} />
);
};
export default Foo;
const valueSelector = state => state.value;
const Foo = () => {
const { dispatch, getState, subscribe } = useStore();
const value = valueSelector(getState());
useEffect(() => subscribe(console.log), []);
const handler = useCallback(() => {
dispatch(action());
}, []);
return (
<Bar onClick={handler} value={value} />
);
};
export default Foo;
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 192.168.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
Python 3.6.5 (default, Mar 29 2018, 03:28:50)
[GCC 5.4.0 20160609] on linux
aiohttp==3.2.1
import asyncio
import logging
import sys
import time
import aiohttp
logger = logging.getLogger('aiohttp_test')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
URL = 'https://api.github.com/events'
MAX_CLIENTS = 2
async def fetch_async(session, pid):
logger.info(f'Fetch async process {pid} started')
start = time.time()
async with session.get(URL) as response:
datetime = response.headers.get('Date')
logger.info(f'Process {pid}: {datetime}, took: {time.time() - start} seconds')
return datetime
async def asynchronous():
start = time.time()
async with aiohttp.ClientSession() as session:
tasks = [asyncio.ensure_future(
fetch_async(session, pid)) for pid in range(1, MAX_CLIENTS + 1)]
await asyncio.gather(*tasks)
logger.info(f'Process took: {time.time() - start} seconds')
if __name__ == '__main__':
io_loop = asyncio.get_event_loop()
try:
logger.info('Script has been started')
io_loop.run_until_complete(asynchronous())
except Exception as e:
logger.exception(e)
finally:
logger.info('Script has been finished')
io_loop.close()
user@home1234:~$ source --help
source: source файл [аргументы]
Выполнение команд из файла в текущем командном процессоре.
Читает и выполняет команды из указанного файла в текущем командном процессоре.
Файла ищется в каталогах, указанных в переменной $PATH.
Если указаны аргументы, они становятся позиционными параметрами
при выполнении файла.
Состояние выхода:
Возвращает состояние последней выполненной команды из файла. Возвращает ошибку,
если файл не удаётся прочитать.
from PyQt4 import QtGui, Qt
class MyLabel(QtGui.QLabel):
clicked = Qt.pyqtSignal(str)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def mousePressEvent(self, *args, **kwargs):
self.clicked.emit(self.text())
return QtGui.QLabel.mousePressEvent(self, *args, **kwargs)
class Main(QtGui.QWidget):
def __init__(self):
super().__init__()
layout = QtGui.QVBoxLayout(self)
for i in range(5):
label = MyLabel(self, "Label " + str(i))
label.clicked.connect(self.set_title)
layout.addWidget(label)
self.resize(300, 300)
def set_title(self, label):
self.setWindowTitle(label)
if __name__ == '__main__':
app = Qt.QApplication([])
m = Main()
m.show()
app.exec()