WebGL brings hardware accelerated 3D to your browser. The code may be complex, but the possibilities are amazing. Given as a lecture in the fh ooe in Hagenberg, Austria in December 2011.
Razvan Rotari shows an experiment to see how far you can go with binding in C++; Cristian Neamtu follows with an insight on how to achieve this in Rust using Serde.
Lambda functions in C++ are unnamed functions contained typically within other functions and examples of their usage includes but is not limited to:
a) Specializing the behavior of an algorithm
b) Encapsulating complex expressions within a function
c) Creating callbacks to be passed onto other functions
Their syntax may look exotic, but once you get accustomed to them they can increase the readability of your software and prove to be particularly useful.
In this workshop we will learn about their syntax and demonstrate multiple real-world examples of their usage.
WebGL brings hardware accelerated 3D to your browser. The code may be complex, but the possibilities are amazing. Given as a lecture in the fh ooe in Hagenberg, Austria in December 2011.
Razvan Rotari shows an experiment to see how far you can go with binding in C++; Cristian Neamtu follows with an insight on how to achieve this in Rust using Serde.
Lambda functions in C++ are unnamed functions contained typically within other functions and examples of their usage includes but is not limited to:
a) Specializing the behavior of an algorithm
b) Encapsulating complex expressions within a function
c) Creating callbacks to be passed onto other functions
Their syntax may look exotic, but once you get accustomed to them they can increase the readability of your software and prove to be particularly useful.
In this workshop we will learn about their syntax and demonstrate multiple real-world examples of their usage.
In this talk, Adrian Kashivskyy, Netguru iOS Developer, digs into rarely discussed Swift features, such as literal convertibles, interpolation convertibles, pattern matching, reflection and advanced Objective-C bridging.
Great design patterns are reusable, modular expressions of what’s going on in your code. They allow you to communicate to other developers simply by the way you code, in addition to being easily maintainable themselves. Put simply, patterns are the available tools in the developer’s toolbox.
In this presentation, I review a few common patterns, their advantages/disadvantages, and how they can be implemented.
The source for this presentation can be found here: https://github.com/derekbrown/designpatterns
Oxygine 2 d objects,events,debug and resourcescorehard_by
Доклад будет посвящен созданию/удалению и взаимодействию игровых объектах, о стандартных и кастомизированных смартпоинтерах. Какими вещами пользоваться чтобы получить debug информацию о том что происходит в игре. Будут приведены примеры шаблонов игрового проектирования. Несколько слов о интересных редакторах игровых ресурсов: MapEditor.com, Astralax.ru
We all know, or should know, about SOLID. The question is, do we write C++ according to the SOLID principles?
https://platis.solutions/blog/2020/06/22/how-to-write-solid-cpp/
In this talk, Adrian Kashivskyy, Netguru iOS Developer, digs into rarely discussed Swift features, such as literal convertibles, interpolation convertibles, pattern matching, reflection and advanced Objective-C bridging.
Great design patterns are reusable, modular expressions of what’s going on in your code. They allow you to communicate to other developers simply by the way you code, in addition to being easily maintainable themselves. Put simply, patterns are the available tools in the developer’s toolbox.
In this presentation, I review a few common patterns, their advantages/disadvantages, and how they can be implemented.
The source for this presentation can be found here: https://github.com/derekbrown/designpatterns
Oxygine 2 d objects,events,debug and resourcescorehard_by
Доклад будет посвящен созданию/удалению и взаимодействию игровых объектах, о стандартных и кастомизированных смартпоинтерах. Какими вещами пользоваться чтобы получить debug информацию о том что происходит в игре. Будут приведены примеры шаблонов игрового проектирования. Несколько слов о интересных редакторах игровых ресурсов: MapEditor.com, Astralax.ru
We all know, or should know, about SOLID. The question is, do we write C++ according to the SOLID principles?
https://platis.solutions/blog/2020/06/22/how-to-write-solid-cpp/
Object-Oriented JavaScript presentation given at the 2010 ESRI Developer Summit. Code and slides are also available at http://github.com/kvangork/OOJS-Presentation
Find me on twitter @kvangork
or my blog http://prng.vangorkom.org
Object-Oriented JavaScript presentation given at ESRI's 2010 Developer Summit. Slides and code available at http://github.com/kvangork/OOJS-Presentation
Find me on twitter @kvangork
or at my blog: http://prng.vangorkom.org
Not so long ago Microsoft announced a new language trageting on front-end developers. Everybody's reaction was like: Why?!! Is it just Microsoft darting back to Google?!
So, why a new language? JavaScript has its bad parts. Mostly you can avoid them or workaraund. You can emulate class-based OOP style, modules, scoping and even run-time typing. But that is doomed to be clumsy. That's not in the language design. Google has pointed out these flaws, provided a new language and failed. Will the story of TypeScript be any different?
KSS, the new Ajax framework for Plone 3 comes with great components by default. But what if you need to integrate it with legacy Javascript? Or maybe you want to integrate that nice library/widget you found on the web. During this talk I will show you where you can extend KSS and how to do it. You can watch me create both the server side and client side code needed to integrate an existing piece of Javascript. After this talk KSS should have no limits for you.
need help with code I wrote. This code is a maze gui, and i need hel.pdfarcotstarsports
need help with code I wrote. This code is a maze gui, and i need help with the method
shorterstpath(); here is my code:
******mazeApp*******
package mazepackage;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.TextInputDialog;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class MazeApp extends Application
{
// default canvas size is DEFAULT_SIZE-by-DEFAULT_SIZE
private static final int DEFAULT_SIZE = 768;
private int width = DEFAULT_SIZE;
private int height = DEFAULT_SIZE;
// The graphics context is needed to enable drawing on the canvas
private GraphicsContext gc;
// boundary of drawing canvas, 0% border
// private static final double BORDER = 0.05;
private static final double BORDER = 0.00;
private double xmin, ymin, xmax, ymax;
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage)
{
Group root = new Group();
Canvas canvas = new Canvas(width, height);
gc = canvas.getGraphicsContext2D();
gc.setLineWidth(2);
gc.setFill(Color.WHITE);
gc.fillRect(0, 0, width, height);
root.getChildren().add(canvas);
TextInputDialog tid = new TextInputDialog();
tid.setTitle(\"Maze Size\");
tid.setHeaderText(\"Enter maze size between 10 and 50\");
tid.showAndWait();
int size = Integer.parseInt(tid.getResult());
if (size > 50)
size = 50;
if (size < 10)
size = 10;
primaryStage.setTitle(\"Maze Application\");
primaryStage.setScene(new Scene(root));
primaryStage.setResizable(false);
// Make sure that the application goes away when then window is closed
primaryStage.setOnCloseRequest(e -> System.exit(0));
primaryStage.show();
Maze maze = new Maze(this, size);
// Must solve the maze in a separate thread or else
// the GUI wont update until the end.....
Thread solver = new Thread(
new Runnable () {
public void run()
{
while(true)
{
maze.buildAndDrawMaze();
maze.findShortestPath();
try
{
Thread.sleep(5000);
}
catch(Exception e) { }
gc.setFill(Color.WHITE);
gc.fillRect(0, 0, width, height);
}
}
});
solver.start();
}
/**
* Sets the pen color to the specified color.
*
* @param color the color to make the pen
*/
public void setPenColor(Color color) {
gc.setStroke(color);
}
/**
* Sets the pen color to the specified color.
*
* @param color the color to make the pen
*/
public void setFillColor(Color color) {
gc.setFill(color);
}
/**
* Sets the x-scale to the specified range.
*
* @param min the minimum value of the x-scale
* @param max the maximum value of the x-scale
* @throws IllegalArgumentException if {@code (max == min)}
*/
public void setXscale(double min, double max) {
double size = max - min;
if (size == 0.0) {
throw new IllegalArgumentException(\"the min and max are the same\");
}
xmin = min - BORDER * size;
xmax = max + BORDER * size;
}
/**
* Sets the y-scale to the specified range.
*
* @param min the minimum valu.
Refactoring can either completely disrupt your project or make you go faster. This presentation will help you to avoid some pitfalls.
It also demonstrates refactorings that you could apply straight away to make your code better.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
5. What is this talk?
• Actually less about Canvas API and more
about patterns in which it can be used...
• No Ruby! (Sorry Rubyists).
• Play along! https://github.com/massivelyfun/
canvas-playground
• ...in 5 / 7 / 5.
14. Simple, no?
cvs = document.getElementById("canvas")
ctx = cvs.getContext("2D")
# ctx has all your draw methods...
ctx.fillText("Hello!", 100, 100, 200)
15. Simple, no?
cvs = document.getElementById("canvas")
ctx = cvs.getContext("2D")
# ctx has all your draw methods...
ctx.fillText("Hello!", 100, 100, 200)
You’ll only see this from here out.
31. Simple Game
Entity
• Respond to update call
• Manage position, height, width
• Delegate draw calls
32. # Game level object
class Entity
# Rect is a drawing primitive
constructor: (options = {}) ->
@rect = options.rect ? null
{x, y} = options
@position = {x: x, y: y}
update: (tick) ->
# override and do something interesting here.
draw: (ctx) ->
# delegate to your drawing primitive!
@rect.draw(ctx)
module.exports = Entity
33. # Game level object
class Entity
# Rect is a drawing primitive
constructor: (options = {}) ->
@rect = options.rect ? null
{x, y} = options
@position = {x: x, y: y}
update: (tick) ->
# override and do something interesting here.
draw: (ctx) ->
# delegate to your drawing primitive!
@rect.draw(ctx)
module.exports = Entity
Game level logic, once per tick
34. # Game level object
class Entity
# Rect is a drawing primitive
constructor: (options = {}) ->
@rect = options.rect ? null
{x, y} = options
@position = {x: x, y: y}
update: (tick) ->
# override and do something interesting here.
draw: (ctx) ->
# delegate to your drawing primitive!
@rect.draw(ctx)
module.exports = Entity
DELEGATE!!!!!
35. Simple Draw
Primitive
• Associated with Entity
• Responds to draw() call
• Has actual CanvasContext2D drawing calls
• You can determine containment here
(image hit detection, for instance)
36. #
# Rect: Drawing primitive for canvas.
class Rect
constructor: (options = {}) ->
@width = options?.width ? 1
@height = options?.height ? 1
{x, y} = options
@position = {x: x, y: y}
draw: (canvasCtx) ->
throw new Error("Implement draw()")
module.exports = Rect
37. #
# Rect: Drawing primitive for canvas.
class Rect
constructor: (options = {}) ->
@width = options?.width ? 1
@height = options?.height ? 1
{x, y} = options
@position = {x: x, y: y}
draw: (canvasCtx) ->
throw new Error("Implement draw()")
module.exports = Rect
Your *simple* interface
38. Rect = require "rect"
# Sometimes we just need the simple things.
# Make a simple box subclass.
class Box extends Rect
constructor: (options = {}) ->
super(options)
draw: (ctx) ->
{x, y} = @position.get()
ctx.fillRect(x, y, @width, @height)
module.exports = Box
39. Rect = require "rect"
# Sometimes we just need the simple things.
# Make a simple box subclass.
class Box extends Rect
constructor: (options = {}) ->
super(options)
draw: (ctx) ->
{x, y} = @position.get()
ctx.fillRect(x, y, @width, @height)
module.exports = Box
Implement draw
40. Rect = require "rect"
# Sometimes we just need the simple things.
# Make a simple box subclass.
class Box extends Rect
constructor: (options = {}) ->
super(options)
draw: (ctx) ->
{x, y} = @position.get()
ctx.fillRect(x, y, @width, @height)
module.exports = Box
Do work on CanvasContext2D
41. Canvas tests are hard;
The one true way is to cheat.
Stub, Stub, stub the world.
42. CanvasRenderingContext2D.prototype.__update = function () {
var args = Array.prototype.slice.call(arguments);
this.__lastUpdateTime = new Date();
this.__updateCount++;
}
CanvasRenderingContext2D.prototype.__fill = function () {
var args = Array.prototype.slice.call(arguments);
this.__lastFillTime = new Date();
this.__fillCount++;
}
// Stub out the real methods. I'm explicitly returning undefined
// in cases where the API calls for void return, so as to be clear
// about the intent. This is a simple sub-set of the API focused
// on operations for images. TODO: implement transforms and state.
CanvasRenderingContext2D.prototype.arcTo = function (x1, y1, x2, y2, radius) {
this.__openSubpath = true;
this.__curX = x2;
this.__curY = y2;
return undefined;
...etc.
};