본 강의에서는 C언어의 for 반복문에 대해 알아보겠습니다. for 반복문은 반복횟수가 정해져 있을경우 유용한 문장으로, 초기화문과, 조건검사문, 증감문으로 구성되어 조건검사결과가 참이면 주어진 문장을 반복적으로 실행하는 문장입니다.
- Youtube 강의동영상
https://youtu.be/va7vnHThYwA
- 코드는 여기에서 다운 받으세요
https://github.com/dongupak/Basic-C-Programming
Недавно было открыто несколько новых метапрограмных техник в C++, позволяющих реализовать рефлексию, работающую "из коробки". В докладе я расскажу об этих техниках, покажу примеры использования и расскажу об их применимости в C++17. Желающие уже сейчас могут начать экспериментировать с рефлексией, используя библиотеку https://github.com/apolukhin/magic_get
본 강의에서는 C언어의 for 반복문에 대해 알아보겠습니다. for 반복문은 반복횟수가 정해져 있을경우 유용한 문장으로, 초기화문과, 조건검사문, 증감문으로 구성되어 조건검사결과가 참이면 주어진 문장을 반복적으로 실행하는 문장입니다.
- Youtube 강의동영상
https://youtu.be/va7vnHThYwA
- 코드는 여기에서 다운 받으세요
https://github.com/dongupak/Basic-C-Programming
Недавно было открыто несколько новых метапрограмных техник в C++, позволяющих реализовать рефлексию, работающую "из коробки". В докладе я расскажу об этих техниках, покажу примеры использования и расскажу об их применимости в C++17. Желающие уже сейчас могут начать экспериментировать с рефлексией, используя библиотеку https://github.com/apolukhin/magic_get
Хочется чего-то новенького, необычного? Тогда добро пожаловать в мир чудеc C++17:
if constexpr (auto& [number, ok] = variable; ok)
return "Hi"
else
return number + 42;
Вы услышите о новом стандарте C++, обнаружите для себя новые полезные классы, функции и возможности языка. Для каждой новинки я приведу примеры использования, расскажу о нюансах и подводных камнях.
А ещё вы узнаете о том, как проходят заседания комитета по стандартизации C++ и сможете задать интересующие вас вопросы связанные с нововведениями С++17 и С++Next.
В своих прошлых докладах (http://cpp-russia.ru/?p=198, и http://cpp-russia.ru/?page_id=1239) я рассказывал о C++ без исключений, как с эти жить, как работать. Этот доклад является продолжением этой серии. Я рекомендую освежить в памяти предыдущие доклады, чтобы наша работа была более продуктивной. Мы обсудим механизмы создания, копирования и перемещения объектов, механизмы аллокации и деаллокации памяти, а также обработку ошибок и исключений. Также мы обсудим проблемы и неудобства, которые испытывает программист, когда пишет код без исключений. В конце, я попытаюсь показать, как можно проектировать структуры данных, контейнеры для удобной работы в средах с исключениями и без исключений.
Последние полтора года на каждой из наших встреч мы рассказываем о том, почему продуманная и чистая архитектура мобильных приложений — это нужно и важно. За попытками спроектировать серебряную пулю мы очень часто забываем — или просто не уделяем достаточно внимания менее заметной части нашего кода — тестам.
Егор Толстой расскажет о том, почему не стоит обделять вниманием unit-тесты, как подходить к их проектированию и осуществлять постепенный рефакторинг. Выступление, как обычно, подкреплено зарядом личной боли и опыта от поддержки базы в 3.000 unit-тестов на одном проекте и 1.000 на другом.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Семейство библиотек clang предоставляет разработчикам широчайшие возможности по реализации различных инструментов, основанных на разборе и анализе абстрактного синтаксического дерева (AST). В частности, авторы clang выпускают такой инструмент, как clang-tidy, который является мощным статическим анализатором кода. Мы разберемся, как этот инструмент применить в процессе разработки для С++ и как дополнить его собственными проверками. Попутно разберемся с некоторыми занимательными особенностями AST для С++.
Korištenje dekoratora je jednostavno, no pisanje zna biti kompleksno.
• Kroz jednostavne korake ćemo proći i naučiti dekoratore
1. Funkcije
Kreiranje def, parametri, vraćanje vrijednosti, poziv funkcije
def foo():
return 1
print foo()
1
2. Scope
Namespace funkcije za identificiranje varijabli u tijelu funkcije
a_string = "This is a global variable"
def foo():
print a_string # 1
foo()
This is a global variable
3. variable resolution rules
Pristup globalnim varijablama (promjenjiv tip podataka podržava promjene)
a = ["Pero"]
b = "Pero”
def foo():
a[0] = "Ivo”
b = "Ivo"
print locals()
foo()
print globals()
print a
4. Variable lifetime
Namespace je svaki puta kreiran i uništen prilikom poziva funkcije, ne postoji sintaksa za vrijednost varijable.
def foo():
x = 1
foo()
5. Function arguments and parameters
Parametri funkcije mogu biti nazivi ili pozicije
def foo(x, y=0):
return x - y
print foo(3,1)
print foo(3)
6. Nested function
Python gleda scope outer prvo i pronalazi lokalnu varijablu kroz inner
def outer():
x = 1
def inner():
print x
inner()
outer()
7. Functions are first class objects in Python
Funkcije su objekti u Pythonu, (klase su također objekti), shvaćamo ih kao vrijednosti, te ih možemo koristiti npr. kao argumente.
print issubclass(int, object)
def foo():
pass
print foo.__class__
print issubclass(foo.__class__, object)
8. Closures
Inner funkcija definirana u ne globalnom scope pamti izgled namespace.
def outer():
x = 1
def inner():
print x
return inner
foo = outer()
foo()
9. Decorators
def outer(some_func):
def inner():
print "Before some_func"
ret = some_func()
print some_func.__name__
return ret + 1
return inner
def foo():
return 1
decorated = outer(foo)
print decorated()
10. Symbol @ applies a decorator
def outer(some_func):
def inner():
print "Before some_func"
ret = some_func()
print some_func.__name__
return ret + 1
return inner
@outer
def foo():
return 1
print foo()
11. *args and **kwargs
def logger(func):
def inner(*args, **kwargs):
print "Argumenti su bili : %s, %s" %(args, kwargs)
return func(*args, **kwargs)
return inner
@logger
def fool(x,y=1):
return x * y
@logger
def fool2():
return 2
print fool(5,2)
print fool2()
12. functools.wraps
from functools import wraps
def logged(func):
@wraps(func)
def with_logging(*args, **kwargs):
print func.__name__ + " was called"
return func(*args, **kwargs)
return with_logging
@logged
def f(x):
"""does some math"""
return x + x * x
print f(3)
print f.__name__
Хочется чего-то новенького, необычного? Тогда добро пожаловать в мир чудеc C++17:
if constexpr (auto& [number, ok] = variable; ok)
return "Hi"
else
return number + 42;
Вы услышите о новом стандарте C++, обнаружите для себя новые полезные классы, функции и возможности языка. Для каждой новинки я приведу примеры использования, расскажу о нюансах и подводных камнях.
А ещё вы узнаете о том, как проходят заседания комитета по стандартизации C++ и сможете задать интересующие вас вопросы связанные с нововведениями С++17 и С++Next.
В своих прошлых докладах (http://cpp-russia.ru/?p=198, и http://cpp-russia.ru/?page_id=1239) я рассказывал о C++ без исключений, как с эти жить, как работать. Этот доклад является продолжением этой серии. Я рекомендую освежить в памяти предыдущие доклады, чтобы наша работа была более продуктивной. Мы обсудим механизмы создания, копирования и перемещения объектов, механизмы аллокации и деаллокации памяти, а также обработку ошибок и исключений. Также мы обсудим проблемы и неудобства, которые испытывает программист, когда пишет код без исключений. В конце, я попытаюсь показать, как можно проектировать структуры данных, контейнеры для удобной работы в средах с исключениями и без исключений.
Последние полтора года на каждой из наших встреч мы рассказываем о том, почему продуманная и чистая архитектура мобильных приложений — это нужно и важно. За попытками спроектировать серебряную пулю мы очень часто забываем — или просто не уделяем достаточно внимания менее заметной части нашего кода — тестам.
Егор Толстой расскажет о том, почему не стоит обделять вниманием unit-тесты, как подходить к их проектированию и осуществлять постепенный рефакторинг. Выступление, как обычно, подкреплено зарядом личной боли и опыта от поддержки базы в 3.000 unit-тестов на одном проекте и 1.000 на другом.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Семейство библиотек clang предоставляет разработчикам широчайшие возможности по реализации различных инструментов, основанных на разборе и анализе абстрактного синтаксического дерева (AST). В частности, авторы clang выпускают такой инструмент, как clang-tidy, который является мощным статическим анализатором кода. Мы разберемся, как этот инструмент применить в процессе разработки для С++ и как дополнить его собственными проверками. Попутно разберемся с некоторыми занимательными особенностями AST для С++.
Korištenje dekoratora je jednostavno, no pisanje zna biti kompleksno.
• Kroz jednostavne korake ćemo proći i naučiti dekoratore
1. Funkcije
Kreiranje def, parametri, vraćanje vrijednosti, poziv funkcije
def foo():
return 1
print foo()
1
2. Scope
Namespace funkcije za identificiranje varijabli u tijelu funkcije
a_string = "This is a global variable"
def foo():
print a_string # 1
foo()
This is a global variable
3. variable resolution rules
Pristup globalnim varijablama (promjenjiv tip podataka podržava promjene)
a = ["Pero"]
b = "Pero”
def foo():
a[0] = "Ivo”
b = "Ivo"
print locals()
foo()
print globals()
print a
4. Variable lifetime
Namespace je svaki puta kreiran i uništen prilikom poziva funkcije, ne postoji sintaksa za vrijednost varijable.
def foo():
x = 1
foo()
5. Function arguments and parameters
Parametri funkcije mogu biti nazivi ili pozicije
def foo(x, y=0):
return x - y
print foo(3,1)
print foo(3)
6. Nested function
Python gleda scope outer prvo i pronalazi lokalnu varijablu kroz inner
def outer():
x = 1
def inner():
print x
inner()
outer()
7. Functions are first class objects in Python
Funkcije su objekti u Pythonu, (klase su također objekti), shvaćamo ih kao vrijednosti, te ih možemo koristiti npr. kao argumente.
print issubclass(int, object)
def foo():
pass
print foo.__class__
print issubclass(foo.__class__, object)
8. Closures
Inner funkcija definirana u ne globalnom scope pamti izgled namespace.
def outer():
x = 1
def inner():
print x
return inner
foo = outer()
foo()
9. Decorators
def outer(some_func):
def inner():
print "Before some_func"
ret = some_func()
print some_func.__name__
return ret + 1
return inner
def foo():
return 1
decorated = outer(foo)
print decorated()
10. Symbol @ applies a decorator
def outer(some_func):
def inner():
print "Before some_func"
ret = some_func()
print some_func.__name__
return ret + 1
return inner
@outer
def foo():
return 1
print foo()
11. *args and **kwargs
def logger(func):
def inner(*args, **kwargs):
print "Argumenti su bili : %s, %s" %(args, kwargs)
return func(*args, **kwargs)
return inner
@logger
def fool(x,y=1):
return x * y
@logger
def fool2():
return 2
print fool(5,2)
print fool2()
12. functools.wraps
from functools import wraps
def logged(func):
@wraps(func)
def with_logging(*args, **kwargs):
print func.__name__ + " was called"
return func(*args, **kwargs)
return with_logging
@logged
def f(x):
"""does some math"""
return x + x * x
print f(3)
print f.__name__
Open Source i nowe technologie, czyli trochę o systemach o dużej niezawodności
Mikstura it2013
1. Niepraktycznie i nieskładnie
o Test Driven Development
Adam Przybyła <adam@ertel.com.pl>
(Creative Commons cc-by-nd)
Mikstura 2 Lateral Thinking - Rybnik 2013