Pull to refresh

How to milk cows with robots and make an industrial startup of it. The history of the R-SEPT development

Reading time10 min
Views2.5K


In 2017, the media heard a very interesting story about a startup that robotizes milking cows on industrial dairy farms. The company is called R-SEPT, and back then it received 10 million rubles of investment. But a year has passed, and there's still no news on what happened further. We contacted Aleksey Khakhunov (AlexeiHahunov), the founder of the startup, and discussed the development. It turns out that the whole year his team was getting the prototype of the robot into shape, and just a week ago they conducted their first field test on the farm.

Under the cut there's a story about a robotics student who grew up on his parents' farm, turned the University diploma into an industrial startup, as he collected the first manipulators with his friends, and then scaled up to the level of state programs for the robotization of agriculture. And the most important is how the iron hand of the robot and the machine vision are better than a living milkmaid.
Читать дальше →

Universal C# Code for NET and JavaScript

Reading time18 min
Views6.5K

In 2013, while working at GFRANQ photo service, I participated in the development of an eponymous web service for publishing and processing photos. Filters and transformations were defined in the file with parameters, and all processing was carried out on the server. During service development, there was a need to support these transformations on the client side for the preview. According to Larry Wall, one of the virtues of a programmer is laziness. Therefore, as truly lazy programmers, we thought about the possibility of using the same code on both the server and client sides. The entire development was conducted in C#. After researching the libraries and a couple of attempts, we proudly concluded that this was possible and began to write the universal code.



Why is this article needed? Indeed, 6 years have passed since 2013, and many technologies have lost their relevance, for example, Script#. On the other hand, new ones have appeared. For example, Bridge.NET or Blazor based on the fancy WebAssembly.


Nevertheless, some ideas can still be used. In this article I tried to describe them as detailed as possible. I hope that the mention of Silverlight and Flash will cause a smile with a hint of nostalgia, and not a desire to criticize the old solutions. Anyway, they have contributed to the development of the web industry.

Read more →

Building VirtualBox for Windows

Reading time39 min
Views11K

 Intro


It is a well-known fact to many users of the Windows version of VirtualBox (from now on, VB; not to be confused with Visual Basic) that starting with 4.3.14 the developers added the so-called «hardening» designed to prevent malicious injections into VB. Although the intentions were good, the implementation happened to cause numerous conflicts with totally legitimate products such as antiviruses, cryptographic modules and even some updates of the Windows itself, and when such a conflict occurs VB simply stops working. Users have to wait for at least a month till the new VB version is released with the proper exclusions added. Worst case is, the conflicting application or update has to be uninstalled, or VB itself has to be downgraded to the version 4.3.12 which was the latest one without hardening. Numerous requests to add a user-controlled exclusion list, or an option to disable hardening, are all left unanswered. The only reply from developers sounds like «if you don't want it build it from source code yourself». Well, looks like we'll have to.

Although the build instructions are described on the official project Wiki, they are incomplete and somewhat outdated, while the build procedure often fails with vague error messages. So when, in the end, I got it working I thought it was worth documenting in full details in a separate article. This instruction is being updated from time to time, and at the moment it is adapted to building VB version 6.1.18. However, if you need information on building earlier versions of VB or auxiliary libraries you can always get it from the history of changes.

OK, I'm in

Cross-Platform System Programming Guide for UNIX & Windows: Level 1

Reading time61 min
Views5.6K

In this tutorial we'll learn how to write cross-platform code in C using the system functions on popular OS (Windows, Linux/Android, macOS & FreeBSD): file management functions and file I/O, console I/O, pipes (unnamed), execution of the new processes. We're going to write our own small helper functions on top of low-level userspace system API and use them so that our main code can run on any OS without modifications. This tutorial is Level 1, the easiest. I split the difficult stuff into parts so the code samples here shouldn't be overwhelming for those who has just started to program in C. We'll discuss the differences between the system API and how to create a cross-platform programming interface that hides all those differences from the user.

Read more

Android Robotics up to 2019: The real story; in 5 parts; part 1

Reading time23 min
Views4.6K
image

Quite a long time ago, seven years ago to be precise, i wrote a series of posts describing the state of android robotics in the world. At the time i was a high school student, with a keen interest in android robotics, who absorbed a bit of knowledge from English, Japanese, Chinese, Korean and Russian internetz and wanted to spill it somewhere.

While the posts were not too professional, and not to my standards of today, they were worthy enough to get stolen and even get translated by unapproved English Habrahabr mirrors, and to this day, appear in searches.

After those posts were written, Habrahabr got split. Removal of everyone outside of pure coding who were considered «not cake enough» to Geektimes felt like an insult and so i left the platform. Yet, the website was reunited last year, and much to a personal surprise, fairly recently an English version of Habrahabr was released.

During all these years i managed to be kicked from one university, finished another with a thick thesis on «Usage of Robotics in Disaster Conditions», lived in the Republic of Korea for half a year, and most importantly, not only expanded my knowledge of android robotics in such ways that the Robotics folder on the main hard drive is now more than 300GB in size, but also expanded the knowledge via journeying and personally meeting projects of the past and present, creating quite a decent archive on Youtube and met not only with the robots, but the engineers and scientists as well.

While i am still nowhere to be a robotics engineer, (and in the daily life i attempt to be a traditional slice-of-life artist), i feel that my tiny gigabytes of knowledge might be worthy of sharing, and today on Habr i'm publishing the real story of Android Robotics from the beginning up to 2019.

Aspect-Oriented Programming (AOP) by source-level weaving

Reading time39 min
Views1.9K
image

Aspect-oriented programming is a very appealing concept for simplifying your codebase, creating clean code, improving modularity, structure of code and minimizing copy-paste errors.

Today, in most cases, weaving aspect's advices is implemented at the bytecode level, i.e. after compilation, a certain tool «weave» an additional byte code with the support of the required logic.

Our approach (as well as the approach of some other tools) is modifying the source code to implement aspect logic. With introduction of the .NET Compiler Platform (aka Roslyn), it is quite easy to achieve this goal, and the result gives certain advantages over the modification of the byte code itself.
Read more →

What is Baked in the Baker's Dozen?

Reading time31 min
Views1.7K
On April 8, PostgreSQL feature freeze took place, so only features committed earlier will get into version PostgreSQL 13. Probably, this version can hardly be considered revolutionary, since it has no conceptual changes. Some of critical patches were late to get into it, such as Table and Functions for the JSON/SQL standard, which had been desirable to be part of PostgreSQL 12, along with the JSONPath patch; plug-in warehouses did not appear either — only the interface is being finalized. The list of improvements is still impressive. We prepared a pretty complete overview of the patches included in the Baker's Dozen.
Read more →

Visualizing Network Topologies: Zero to Hero in Two Days

Reading time49 min
Views33K

Hey everyone! This is a follow-up article on a local Cisco Russia DevNet Marathon online event I attended in May 2020. It was a series of educational webinars on network automation followed by daily challenges based on the discussed topics.
On a final day, the participants were challenged to automate a topology analysis and visualization of an arbitrary network segment and, optionally, track and visualize the changes.


The task was definitely not trivial and not widely covered in public blog posts. In this article, I would like to break down my own solution that finally took first place and describe the selected toolset and considerations.

Let's get started.


Read more →

A City Without Traffic Jams

Reading time55 min
Views4.2K

Chapter 2.
(the link to Chapter 1)

The Art of Designing Road Networks


Transport problems of a city through the eyes of a Computer Scientist


If I were recommended an article with the title “The Art of Designing Road Networks,” I would immediately ask how many road networks were built with the participation of its author. I must admit, my professional activity was far from road construction and was recently associated with the design of microprocessors where I, among other responsibilities, was engaged in the resource consumption of data switching. At that time my table stood just opposite the panoramic window which opened up a beautiful view of the long section of the Volgograd Highway and part of the Third Transport Ring with their endless traffic jams from morning to evening, from horizon to horizon. One day, I had a sudden shock of recognition: “The complexities of the data switching process that I struggle with on a chip may be similar to the difficulties the cars face as they flow through the labyrinth of road network”.
Probably, this view from the outside and the application of methods that were not traditional for the area in question gave me a chance to understand the cause of traffic jams and make recommendations on how to overcome the problem in practice.
Read more →

Analysis of commits and pull requests in Travis CI, Buddy and AppVeyor using PVS-Studio

Reading time10 min
Views740

Picture 11

Starting from the version 7.04, the PVS-Studio analyzer for C and C++ languages on Linux and macOS provides the test feature of checking the list of specified files. Using the new mode, you can configure the analyzer to check commits and pull requests. This article covers setting up the check of certain modified files from a GitHub project in such popular CI (Continuous Integration) systems, as Travis CI, Buddy and AppVeyor.
Read more →

Разметка данных при помощи GPT-4

Reading time9 min
Views8.1K

Разметка данных — критически важный компонент проектов машинного обучения. К ней применима старая поговорка «мусор на входе — мусор на выходе». В процессе разметки создаются аннотированные датасеты для обучения и проверки. Однако этот процесс может быть длительным и дорогостоящим, особенно для проектов с большими объёмами данных. Но что если мы сможем воспользоваться прогрессом LLM для снижения затрат и усилий, необходимых для выполнения задач разметки данных?

GPT-4 — это современная языковая модель, разработанная компанией OpenAI. Она способна понимать запросы и генерировать текст, напоминающий составленный людьми. В этом посте мы расскажем о том, как можно использовать GPT-4 с целью настройки меток для различных задач. Это может существенно снизить затраты времени и труда, связанные с процессом разметки. Чтобы показать, как инжиниринг промтов способен помочь в создании точных и надёжных меток при помощи GPT-4 и как эту методику можно использовать для гораздо более мощных возможностей, мы воспользуемся примером с классификацией эмоционального настроя (sentiment classification).
Читать дальше →

Data labeling – training on cats

Level of difficultyEasy
Reading time8 min
Views544

At some point while diving deeper into automation processes you are faced with the need for data labeling, although just a couple of weeks ago, the phrases data labeling and you were standing at a party called "Earnings on the Internet" in different rooms. Or it would be better to say that you were standing by the pool, and the data labeling was on the third floor, smoking on the balcony with experts in the field of machine learning. How did we meet? Probably, someone pushed it off the balcony into the pool, and I helped it out, soaking my clothes along the way.

Read more

Safe-enough linux server, a quick security tuning

Reading time10 min
Views2.6K
The case: You fire up a professionally prepared Linux image at a cloud platform provider (Amazon, DO, Google, Azure, etc.) and it will run a kind of production level service moderately exposed to hacking attacks (non-targeted, non-advanced threats).

What would be the standard quick security related tuning to configure before you install the meat?


release: 2005, Ubuntu + CentOS (supposed to work with Amazon Linux, Fedora, Debian, RHEL as well)


image

Read more →

Немного об отладке. Часть 1

Level of difficultyMedium
Reading time127 min
Views4.4K

Приветствую.

Вы когда нибудь отлаживали программы? Не врите, что нет. Благодаря отладчикам наши программы работают корректно (или хотя бы близко к этому).

Но вот знаете ли вы как отладка устроена: точки останова, шаги, бэктрейс, чтение переменных?

Нет или да - ответ не важен. Эта статья даст ответы на многие вопросы об отладке, которые вы, возможно, и не задавали себе.

В этой части рассмотрим ядро отладки, напишем свой собственный отладчик, рассмотрим реализацию gdb, а в конце посмотрим на отладку управляемых языков.

Путешествие на 20 минут

ONLYOFFICE Community Server: how bugs contribute to the emergence of security problems

Reading time12 min
Views959
image1.png

Server-side network applications rarely get the chance to join the ranks of our reviews of errors found in open source software. This is probably due to their popularity. After all, we try to pay attention to the projects that readers themselves offer us. At the same time, servers often perform very important functions, but their performance and benefits remain invisible to most users. So, by chance, the code of ONLYOFFICE Community Server was checked. It turned out to be a very fun review.
Read more →

Вперёд в п(р)ошлое. Geforce FX. The Dawn of War

Reading time37 min
Views30K
Со дня своего основания в Microsoft умели две самые важные вещи в жизни: вовремя проанализировать что-то чужое и сделать на этом какие-то свои деньги. Во многом именно благодаря Microsoft как главному генератору самых максималистских идей вся IT-индустрия шла (и до сих пор идёт) выгодными прежде всего самому Microsoft путями развития. Результатом реализации множества таких идей стало не только банкротство многих гигантов IT-индустрии, но и стремительная всеобщая унификация. Все компоненты в PC от железа до софта становились всё более универсальными и похожими, теряя возможности выгодно отличаться. И вот, в 2002 году, когда Microsoft в очередной раз приложила свои шаловливые монополистические ручонки к 3D-индустрии, по производителям 3D-чипов громовой волной раскатилась спецификация DirectX9…

И как все мы хорошо помним ) уже следующий 2003 год ознаменовал приход киношной графики на PC. Ну да, ведь так всё и было: WinXP, игры на DVD, требующие установить DirectX9, и… одинаковые видеокарты с какими-то там шейдерами. Условно можно сказать, что спецификация DX9 должна была положить конец различиям результатов рендеринга одного и того же изображения на картах разных производителей. Тем не менее, даже эта спецификация не смогла тогда окончательно обуздать NVIDIA. И правильно, иначе зачем NVIDIA было вкладывать во что-то перспективное деньги?

И вот тут мы подходим к тому, что побудило меня в очередной раз ткнуть труп палкой и таки написать этот обзор.

Danger: Внутри много БОЛЬШИХ картинок. Только первая — уже ДВА мегабайта.
Читать дальше →

PVS-Studio checks the code of Flipper Zero dolphin

Reading time12 min
Views1.8K

Flipper Zero + PVS-Studio


Flipper Zero is an open-source multi-tool for geeks and penetration testers. It so happened that the Flipper Zero project and the PVS-Studio analyzer crossed paths. A philosophical question: should we check the project, if the project developers have already started fixing errors? Let's try to do this.

Read more →
1