Последние полтора года на каждой из наших встреч мы рассказываем о том, почему продуманная и чистая архитектура мобильных приложений — это нужно и важно. За попытками спроектировать серебряную пулю мы очень часто забываем — или просто не уделяем достаточно внимания менее заметной части нашего кода — тестам.
Егор Толстой расскажет о том, почему не стоит обделять вниманием unit-тесты, как подходить к их проектированию и осуществлять постепенный рефакторинг. Выступление, как обычно, подкреплено зарядом личной боли и опыта от поддержки базы в 3.000 unit-тестов на одном проекте и 1.000 на другом.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
В своих прошлых докладах (http://cpp-russia.ru/?p=198, и http://cpp-russia.ru/?page_id=1239) я рассказывал о C++ без исключений, как с эти жить, как работать. Этот доклад является продолжением этой серии. Я рекомендую освежить в памяти предыдущие доклады, чтобы наша работа была более продуктивной. Мы обсудим механизмы создания, копирования и перемещения объектов, механизмы аллокации и деаллокации памяти, а также обработку ошибок и исключений. Также мы обсудим проблемы и неудобства, которые испытывает программист, когда пишет код без исключений. В конце, я попытаюсь показать, как можно проектировать структуры данных, контейнеры для удобной работы в средах с исключениями и без исключений.
Хочется чего-то новенького, необычного? Тогда добро пожаловать в мир чудеc C++17:
if constexpr (auto& [number, ok] = variable; ok)
return "Hi"
else
return number + 42;
Вы услышите о новом стандарте C++, обнаружите для себя новые полезные классы, функции и возможности языка. Для каждой новинки я приведу примеры использования, расскажу о нюансах и подводных камнях.
А ещё вы узнаете о том, как проходят заседания комитета по стандартизации C++ и сможете задать интересующие вас вопросы связанные с нововведениями С++17 и С++Next.
Последние полтора года на каждой из наших встреч мы рассказываем о том, почему продуманная и чистая архитектура мобильных приложений — это нужно и важно. За попытками спроектировать серебряную пулю мы очень часто забываем — или просто не уделяем достаточно внимания менее заметной части нашего кода — тестам.
Егор Толстой расскажет о том, почему не стоит обделять вниманием unit-тесты, как подходить к их проектированию и осуществлять постепенный рефакторинг. Выступление, как обычно, подкреплено зарядом личной боли и опыта от поддержки базы в 3.000 unit-тестов на одном проекте и 1.000 на другом.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
В своих прошлых докладах (http://cpp-russia.ru/?p=198, и http://cpp-russia.ru/?page_id=1239) я рассказывал о C++ без исключений, как с эти жить, как работать. Этот доклад является продолжением этой серии. Я рекомендую освежить в памяти предыдущие доклады, чтобы наша работа была более продуктивной. Мы обсудим механизмы создания, копирования и перемещения объектов, механизмы аллокации и деаллокации памяти, а также обработку ошибок и исключений. Также мы обсудим проблемы и неудобства, которые испытывает программист, когда пишет код без исключений. В конце, я попытаюсь показать, как можно проектировать структуры данных, контейнеры для удобной работы в средах с исключениями и без исключений.
Хочется чего-то новенького, необычного? Тогда добро пожаловать в мир чудеc C++17:
if constexpr (auto& [number, ok] = variable; ok)
return "Hi"
else
return number + 42;
Вы услышите о новом стандарте C++, обнаружите для себя новые полезные классы, функции и возможности языка. Для каждой новинки я приведу примеры использования, расскажу о нюансах и подводных камнях.
А ещё вы узнаете о том, как проходят заседания комитета по стандартизации C++ и сможете задать интересующие вас вопросы связанные с нововведениями С++17 и С++Next.
Недавно было открыто несколько новых метапрограмных техник в C++, позволяющих реализовать рефлексию, работающую "из коробки". В докладе я расскажу об этих техниках, покажу примеры использования и расскажу об их применимости в C++17. Желающие уже сейчас могут начать экспериментировать с рефлексией, используя библиотеку https://github.com/apolukhin/magic_get
Practical JavaScript Programming - Session 3/8Wilson Su
JavaScript is one of the most popular skills in today’s job market. It allows you to create both client- and server-side applications quickly and easily. Having a solid understanding of this powerful and versatile language is essential to anyone who uses it.
“Practical JavaScript Programming” does not only focus on best practices, but also introduces the fundamental concepts. This course will take you from JavaScript basics to advanced. You’ll learn about topics like Data Types, Functions, Events, AJAX and more.
Comment Transformer vos boucles Objective-C en “collection pipelines” en utilisant le framework BlocksKit (ou Swift), par Mathieu Godart (votre serviteur). Cette présentation s’inspire de la série d’articles publiée par Martin Fowler, Refactoring with Loops and Collection Pipelines (http://martinfowler.com/articles/refactoring-pipelines.html).
Семейство библиотек clang предоставляет разработчикам широчайшие возможности по реализации различных инструментов, основанных на разборе и анализе абстрактного синтаксического дерева (AST). В частности, авторы clang выпускают такой инструмент, как clang-tidy, который является мощным статическим анализатором кода. Мы разберемся, как этот инструмент применить в процессе разработки для С++ и как дополнить его собственными проверками. Попутно разберемся с некоторыми занимательными особенностями AST для С++.
Tecnológico Nacional de México
Ing. en Sistemas Computacionales
Base de Datos para Dispsitivos Móviles
Proyecto integrador con Android, Eclipse, SQLite y archivo de texto
Недавно было открыто несколько новых метапрограмных техник в C++, позволяющих реализовать рефлексию, работающую "из коробки". В докладе я расскажу об этих техниках, покажу примеры использования и расскажу об их применимости в C++17. Желающие уже сейчас могут начать экспериментировать с рефлексией, используя библиотеку https://github.com/apolukhin/magic_get
Practical JavaScript Programming - Session 3/8Wilson Su
JavaScript is one of the most popular skills in today’s job market. It allows you to create both client- and server-side applications quickly and easily. Having a solid understanding of this powerful and versatile language is essential to anyone who uses it.
“Practical JavaScript Programming” does not only focus on best practices, but also introduces the fundamental concepts. This course will take you from JavaScript basics to advanced. You’ll learn about topics like Data Types, Functions, Events, AJAX and more.
Comment Transformer vos boucles Objective-C en “collection pipelines” en utilisant le framework BlocksKit (ou Swift), par Mathieu Godart (votre serviteur). Cette présentation s’inspire de la série d’articles publiée par Martin Fowler, Refactoring with Loops and Collection Pipelines (http://martinfowler.com/articles/refactoring-pipelines.html).
Семейство библиотек clang предоставляет разработчикам широчайшие возможности по реализации различных инструментов, основанных на разборе и анализе абстрактного синтаксического дерева (AST). В частности, авторы clang выпускают такой инструмент, как clang-tidy, который является мощным статическим анализатором кода. Мы разберемся, как этот инструмент применить в процессе разработки для С++ и как дополнить его собственными проверками. Попутно разберемся с некоторыми занимательными особенностями AST для С++.
Tecnológico Nacional de México
Ing. en Sistemas Computacionales
Base de Datos para Dispsitivos Móviles
Proyecto integrador con Android, Eclipse, SQLite y archivo de texto
3. Сүлжээний програмын жишээ №1 (үргэлжлэл) DatagramPacket packet = new DatagramPacket( data, data.length, addr, myPort ); DatagramSocketds = new DatagramSocket( ); ds.send( packet ); ds.close( ); } catch ( IOException e ) { System.out.println( e ); // Error creating socket } } public void start( ) { sendMessage("Arrived"); } public void stop( ) { sendMessage("Departed"); } }
4. Жишээ №2: Сервер програм //file: Server.java import java.net.*; import java.io.*; public class Server { public static void main( String argv[] ) throws IOException { ServerSocketss = new ServerSocket( Integer.parseInt(argv[0]) ); while ( true ) new ServerConnection( ss.accept( ) ).start( ); } } // end of class Server class ServerConnection extends Thread { Socket client; ServerConnection ( Socket client ) throws SocketException { this.client = client; } public void run( ) { try { ObjectInputStream in = new ObjectInputStream( client.getInputStream( ) ); ObjectOutputStream out = new ObjectOutputStream( client.getOutputStream( ) );
5. Жишээ №2: сервер програм (үргэлжлэл) while ( true ) { out.writeObject( processRequest( in.readObject( ) ) ); out.flush( ); } } catch ( EOFException e3 ) { // Normal EOF try { client.close( ); } catch ( IOException e ) { } } catch ( IOException e ) { System.out.println( "I/O error " + e ); // I/O error } catch ( ClassNotFoundException e2 ) { System.out.println( e2 ); // unknown type of request object } } private Object processRequest( Object request ) { if ( request instanceofDateRequest ) return new java.util.Date( ); else if ( request instanceofWorkRequest ) return ((WorkRequest)request).execute( ); else return null; } }
6. Жишээ №2: клиент програм //file: Client. java import java.net.*; import java.io.*; public class Client { public static void main( String argv[] ) { try { Socket server = new Socket( argv[0], Integer.parseInt(argv[1]) ); ObjectOutputStream out = new ObjectOutputStream( server.getOutputStream( ) ); ObjectInputStream in = new ObjectInputStream( server.getInputStream( ) ); out.writeObject( new DateRequest( ) ); out.flush( );
7. Жишээ №2: клиент програм (үргэлжлэл) System.out.println( in.readObject( ) ); out.writeObject( new MyCalculation( 2 ) ); out.flush( ); System.out.println( in.readObject( ) ); server.close( ); } catch ( IOException e ) { System.out.println( "I/O error " + e ); // I/O error } catch ( ClassNotFoundException e2 ) { System.out.println( e2 ); // unknown type of response object } } }