Tag Archives: 54

MPA Met With Russian Site-Blocking Body to Discuss Piracy

Post Syndicated from Andy original https://torrentfreak.com/mpa-met-with-russian-site-blocking-body-to-discuss-piracy-180209/

Given Russia’s historical reputation for having a weak approach to online piracy, the last few years stand in stark contrast to those that went before.

Overseen by telecoms watchdog Rozcomnadzor, Russia now has one of the toughest site-blocking regimes in the whole world. It’s possible to have entire sites blocked in a matter of days, potentially over a single piece of infringing content. For persistent offenders, permanent blocking is now a reality.

While that process requires the involvement of the courts, the subsequent blocking of mirror sites does not, with Russia blocking more than 500 since a new law was passed in October 2017.

With anti-piracy measures now a force to be reckoned with in Russia, it’s emerged that last week Stan McCoy, president of the Motion Picture Association’s EMEA division, met with telecoms watchdog Roskomnadzor in Moscow.

McCoy met with Rozcomnadzor chief Alexander Zharov last Friday, in a meeting that was also attended by Ekaterina Mironova, head of the anti-piracy committee of the Media Communication Union (ISS).

According to Rozcomnadzor, issues discussed included copyright-related legislation and regulation. Also on the agenda was the strengthening of international cooperation, including between public organizations representing the interests of rightholders.

“In particular, an agreement was reached to expand contacts between the MPAA and the ISS,” Rozcomnadzor notes.

The ISS (known locally as Media-Communication Union MKC) was founded by the largest Russian media companies and telecom operators in February 2014. It differentiates itself from other organizations with the claim that its the first group of its type to represent the interests of communications companies, rights holders, broadcasters and large distributors.

During the meeting, McCoy was given an update on Russia’s implementation of the various anti-piracy laws introduced and developed since May 2015.

“Since the introduction of the anti-piracy laws, Roskomnadzor has received more than 2,800 rulings from the Moscow City Court on the adoption of preliminary provisional [blocking] measures to protect copyright on the Internet, including 1,630 for movies,” the watchdog reveals.

“In connection with the deletion of pirated content, access to the territory of Russia was restricted for 1,547 Internet resources. Based on the decisions of the Moscow City Court, 752 pirated sites are now permanently blocked, and according to the decisions of the Ministry of Communications, more than 600 ‘mirrors’ of these resources are blocked too.”

While it’s normally the position of the US to criticize Russia for not doing enough to tackle piracy, it must’ve been interesting to participate in a meeting where for once the Russians had the upper hand. Even though the MPAA previously campaigned for one, there is no site-blocking mechanism in the United States.

“The fight against piracy stimulates the growth of the legal online video market in Russia. Attendance of legal online sites is constantly growing. Users are attracted to high-quality content for an affordable fee,” Rozcomnadzor concludes.

The meeting’s participants will join up again during the St. Petersburg International Economic Forum scheduled to take place May 24-26.

Source: TF, for the latest info on copyright, file-sharing, torrent sites and more. We also have VPN discounts, offers and coupons

First Linux-Based RISC-V Board Prepares for Take-Off (Linux.com)

Post Syndicated from ris original https://lwn.net/Articles/746796/rss

Eric Brown takes
a look
at the SiFive “HiFive Unleashed” SBC that runs Linux on its
RISC-V based, quad-core, 1.5GHz U540 SoC. “The open spec HiFive Unleashed board integrates a U540 SoC, 8GB of DDR4 RAM, and 32MB quad SPI flash. The only other major features include a microSD slot, a Gigabit Ethernet port, and an FMC connector for future expansion. A SiFive rep confirmed to Linux.com that the board will be open source hardware, with freely available schematics and layout files.

Тоест

Post Syndicated from Йовко Ламбрев original https://yovko.net/toest/

В Пловдив след Освобождението бе започнал да излиза първият български вестник “Марица” с брой 1 от 25.VII/6.VIII.1878 г. Издател бил Христо Г. Данов. […] Съобщенията и новините във в. “Марица” били така подробни и достоверни, че в София предпочитали да се осведомяват от него, а не от местните вестници. За да знаят чужденците какво става в България, имало статии и на френски език. […]

В 1907 г. в Пловдив излизаха повече от десет вестника освен периодическите списания: “Балкански новини”, еврейският “Ел Диа” – “Ден”, турският “Ехали” – “Народ”, “Зорница”, гръцкият “Едисие ту ему”, турският “Мувазине”, “Нова Марица”, “Пловдив”, арменският “Размиг” – “Борец”, “Санстефанска България”, гръцкият “Филипополис”, еврейският “Ла семена” – “Седмица”, турският “Хилел” – “Полумесец”. Започнаха да печатат свои вестници и работническите синдикати. В 1908 г. се появи първият брой на вестник “Тютюноработник”, а в края на 1909 г. – на “Кожаро-обущар”. […]

Вестници много, на различни езици, но в 45-хилядния град имаше и много читатели!

Никола Алваджиев, “Пловдивска хроника”

Първият брой на вестник Марица от 1878 година

Първият брой на вестник Марица от 1878 година

Днес в почти половин милионен Пловдив излиза само един ежедневник.

А голяма част от медиите в България са зависими. Подчинени на политическите влияния, на бизнес интересите на собствениците си, или разчитат на благоразположението на рекламодателите си. Автоцензурата също се е превърнала във важно умение за оцеляване на българския журналист и на българския медиен пазар. Така основната роля на медиите да бъдат в полза на обществото и да са критичен коректив на управляващите става невъзможна.

Без свободни медии обаче демокрацията е не просто уязвима – тя не може да съществува. А единствената гаранция за действителна независимост на медиите е да бъде изолирано влиянието на собствениците, рекламодателите и властимащите върху тях, което ще е възможно само ако гражданите се ангажират с финансирането на медиите, на които държат.

От години насам с различни хора обсъждах няколко форма̀та, които по една или друга причина не се реализираха. На 1 февруари, около 5 сутринта, след безсънна нощ и над 12-часова работна сесия, започнала следобеда на предния ден, дръпнахме завесата пред Тоест.

Наясно сме, че започваме скромно, но се надяваме да пораснем бързо и заедно. Екипът ни постепенно расте, защото продължаваме да разговаряме с хора, които да привлечем под една или друга форма. Засега сме разпръснати между София, Пловдив и няколко европейски града. Редакцията ни е виртуална, за да можем да сме навсякъде и защото искаме да изцедим възможностите на съвременните технологии, за да създаваме съдържание и общност около себе си.

Искаме да натежим в посока на думите, които имат смисъл. Искаме да предлагаме стойностни неща за четене, гледане и слушане. Представяме си се като съвременно списание, което „разлиствате“ по-бавно, и избирате подходящия момент, за да се потопите в една или друга тема. Не можем да бъдем прехвърлени набързо. Ще прескачаме злободневните теми, за да се фокусираме върху истински важните. Но ако нямаме автор за дадена тема, ще предпочетем да я пропуснем, отколкото да не бъдем на ниво. Искаме да даваме трибуна на хора с експертност и репутация в своята област и целенасочено ще отбягваме многознайството по всяка тема.

В „Тоест“ няма да препубликуваме чужди материали, а само авторски. Ще съпоставяме факти, ще ги анализираме, а когато сме пристрастни към някоя позиция, ще го декларираме ясно и обосновано. Ще търсим и разказваме историите на хората, които вдъхновяват, и на малкия и средния бизнес, който възражда предприемаческия дух на българите. Ще бъдем критични към управляващите, които и да са те.

И започваме, отказвайки се да публикуваме реклами, отказвайки да се финансираме по програми, отказвайки зад нас да стои нечий бизнес. Заради това регистрирахме фондация, а не търговско дружество за издател на Тоест. Единственият начин да се закрепим над водата е да спечелим доверието на читателите, зрителите и слушателите си, да им носим смисъл и полезност, а те редовно да ни подкрепят с малки суми. Нямаме друга опция. Нещо повече, освен да спечелим доверие, ежедневно ще трябва да го защитаваме и умножаваме.

Съзнаваме, че подобен бизнес модел звучи сякаш сами се препъваме, но пък… ако се получи? В Тоест няма и няма да имаме нужда от търговци, които да продават реклама, за да запълваме страниците си с банери и платени публикации. Няма да броим кликовете върху тях. Няма да се борим за повече трафик, няма да пишем провокативни заглавия, за да привличаме внимание. Дори не ползваме Google Analytics, защото не следим и не профилираме посетителите си – защото няма пред кого да доказваме посещаемост. Няма да слагаме и paywall, за да предлагаме по няколко безплатни статии, а след това да затваряме достъпа до сайта за посетители, които не са платили.

Единственото, което ще реши дали ще оцелеем при този модел, е дали достатъчно хора ни намират за полезни и ни подкрепят. Нито сме първи, нито единствени с подобна идея – има вече успешни проекти по света и това ни дава кураж да опитаме.

Оригинален линк: “Тоест” • Някои права запазени

2017 Weather Station round-up

Post Syndicated from Richard Hayler original https://www.raspberrypi.org/blog/2017-weather-station/

As we head into 2018 and start looking forward to longer days in the Northern hemisphere, I thought I’d take a look back at last year’s weather using data from Raspberry Pi Oracle Weather Stations. One of the great things about the kit is that as well as uploading all its readings to the shared online Oracle database, it stores them locally on the Pi in a MySQL or MariaDB database. This means you can use the power of SQL queries coupled with Python code to do automatic data analysis.

Soggy Surrey

My Weather Station has only been installed since May, so I didn’t have a full 52 weeks of my own data to investigate. Still, my station recorded more than 70000 measurements. Living in England, the first thing I wanted to know was: which was the wettest month? Unsurprisingly, both in terms of average daily rainfall and total rainfall, the start of the summer period — exactly when I went on a staycation — was the soggiest:

What about the global Weather Station community?

Even soggier Bavaria

Here things get slightly trickier. Although we have a shiny Oracle database full of all participating schools’ sensor readings, some of the data needs careful interpretation. Many kits are used as part of the school curriculum and do not always record genuine outdoor conditions. Nevertheless, it appears that Adalbert Stifter Gymnasium in Bavaria, Germany, had an even wetter 2017 than my home did:


View larger map

Where the wind blows

The records Robert-Dannemann Schule in Westerstede, Germany, is a good example of data which was most likely collected while testing and investigating the weather station sensors, rather than in genuine external conditions. Unless this school’s Weather Station was transported to a planet which suffers from extreme hurricanes, it wasn’t actually subjected to wind speeds above 1000km/h in November. Dismissing these and all similarly suspect records, I decided to award the ‘Windiest location of the year’ prize to CEIP Noalla-Telleiro, Spain.


View larger map

This school is right on the coast, and is subject to some strong and squally weather systems.

Weather Station at CEIP Noalla - Telleiro

Weather Station at CEIP Noalla-Telleiro

They’ve mounted their wind vane and anemometer nice and high, so I can see how they were able to record such high wind velocities.

A couple of Weather Stations have recently been commissioned in equally exposed places — it will be interesting to see whether they will record even higher speeds during 2018.

Highs and lows

After careful analysis and a few disqualifications (a couple of Weather Stations in contention for this category were housed indoors), the ‘Hottest location’ award went to High School of Chalastra in Thessaloniki, Greece. There were a couple of Weather Stations (the one at The Marwadi Education Foundation in India, for example) that reported higher average temperatures than Chalastra’s 24.54 ºC. However, they had uploaded far fewer readings and their data coverage of 2017 was only partial.


View larger map

At the other end of the thermometer, the location with the coldest average temperature is École de la Rose Sauvage in Calgary, Canada, with a very chilly 9.9 ºC.

Ecole de la Rose sauvage Weather Station

Weather Station at École de la Rose Sauvage

I suspect this school has a good chance of retaining the title: their lowest 2017 temperature of -24 ºC is likely to be beaten in 2018 due to extreme weather currently bringing a freezing start to the year in that part of the world.


View larger map

Analyse your own Weather Station data

If you have an Oracle Raspberry Pi Weather Station and would like to perform an annual review of your local data, you can use this Python script as a starting point. It will display a monthly summary of the temperature and rainfall for 2017, and you should be able to customise the code to focus on other sensor data or on a particular time of year. We’d love to see your results, so please share your findings with [email protected], and we’ll send you some limited-edition Weather Station stickers.

The post 2017 Weather Station round-up appeared first on Raspberry Pi.

Top 8 Best Practices for High-Performance ETL Processing Using Amazon Redshift

Post Syndicated from Thiyagarajan Arumugam original https://aws.amazon.com/blogs/big-data/top-8-best-practices-for-high-performance-etl-processing-using-amazon-redshift/

An ETL (Extract, Transform, Load) process enables you to load data from source systems into your data warehouse. This is typically executed as a batch or near-real-time ingest process to keep the data warehouse current and provide up-to-date analytical data to end users.

Amazon Redshift is a fast, petabyte-scale data warehouse that enables you easily to make data-driven decisions. With Amazon Redshift, you can get insights into your big data in a cost-effective fashion using standard SQL. You can set up any type of data model, from star and snowflake schemas, to simple de-normalized tables for running any analytical queries.

To operate a robust ETL platform and deliver data to Amazon Redshift in a timely manner, design your ETL processes to take account of Amazon Redshift’s architecture. When migrating from a legacy data warehouse to Amazon Redshift, it is tempting to adopt a lift-and-shift approach, but this can result in performance and scale issues long term. This post guides you through the following best practices for ensuring optimal, consistent runtimes for your ETL processes:

  • COPY data from multiple, evenly sized files.
  • Use workload management to improve ETL runtimes.
  • Perform table maintenance regularly.
  • Perform multiple steps in a single transaction.
  • Loading data in bulk.
  • Use UNLOAD to extract large result sets.
  • Use Amazon Redshift Spectrum for ad hoc ETL processing.
  • Monitor daily ETL health using diagnostic queries.

1. COPY data from multiple, evenly sized files

Amazon Redshift is an MPP (massively parallel processing) database, where all the compute nodes divide and parallelize the work of ingesting data. Each node is further subdivided into slices, with each slice having one or more dedicated cores, equally dividing the processing capacity. The number of slices per node depends on the node type of the cluster. For example, each DS2.XLARGE compute node has two slices, whereas each DS2.8XLARGE compute node has 16 slices.

When you load data into Amazon Redshift, you should aim to have each slice do an equal amount of work. When you load the data from a single large file or from files split into uneven sizes, some slices do more work than others. As a result, the process runs only as fast as the slowest, or most heavily loaded, slice. In the example shown below, a single large file is loaded into a two-node cluster, resulting in only one of the nodes, “Compute-0”, performing all the data ingestion:

When splitting your data files, ensure that they are of approximately equal size – between 1 MB and 1 GB after compression. The number of files should be a multiple of the number of slices in your cluster. Also, I strongly recommend that you individually compress the load files using gzip, lzop, or bzip2 to efficiently load large datasets.

When loading multiple files into a single table, use a single COPY command for the table, rather than multiple COPY commands. Amazon Redshift automatically parallelizes the data ingestion. Using a single COPY command to bulk load data into a table ensures optimal use of cluster resources, and quickest possible throughput.

2. Use workload management to improve ETL runtimes

Use Amazon Redshift’s workload management (WLM) to define multiple queues dedicated to different workloads (for example, ETL versus reporting) and to manage the runtimes of queries. As you migrate more workloads into Amazon Redshift, your ETL runtimes can become inconsistent if WLM is not appropriately set up.

I recommend limiting the overall concurrency of WLM across all queues to around 15 or less. This WLM guide helps you organize and monitor the different queues for your Amazon Redshift cluster.

When managing different workloads on your Amazon Redshift cluster, consider the following for the queue setup:

  • Create a queue dedicated to your ETL processes. Configure this queue with a small number of slots (5 or fewer). Amazon Redshift is designed for analytics queries, rather than transaction processing. The cost of COMMIT is relatively high, and excessive use of COMMIT can result in queries waiting for access to the commit queue. Because ETL is a commit-intensive process, having a separate queue with a small number of slots helps mitigate this issue.
  • Claim extra memory available in a queue. When executing an ETL query, you can take advantage of the wlm_query_slot_count to claim the extra memory available in a particular queue. For example, a typical ETL process might involve COPYing raw data into a staging table so that downstream ETL jobs can run transformations that calculate daily, weekly, and monthly aggregates. To speed up the COPY process (so that the downstream tasks can start in parallel sooner), the wlm_query_slot_count can be increased for this step.
  • Create a separate queue for reporting queries. Configure query monitoring rules on this queue to further manage long-running and expensive queries.
  • Take advantage of the dynamic memory parameters. They swap the memory from your ETL to your reporting queue after the ETL job has completed.

3. Perform table maintenance regularly

Amazon Redshift is a columnar database, which enables fast transformations for aggregating data. Performing regular table maintenance ensures that transformation ETLs are predictable and performant. To get the best performance from your Amazon Redshift database, you must ensure that database tables regularly are VACUUMed and ANALYZEd. The Analyze & Vacuum schema utility helps you automate the table maintenance task and have VACUUM & ANALYZE executed in a regular fashion.

  • Use VACUUM to sort tables and remove deleted blocks

During a typical ETL refresh process, tables receive new incoming records using COPY, and unneeded data (cold data) is removed using DELETE. New rows are added to the unsorted region in a table. Deleted rows are simply marked for deletion.

DELETE does not automatically reclaim the space occupied by the deleted rows. Adding and removing large numbers of rows can therefore cause the unsorted region and the number of deleted blocks to grow. This can degrade the performance of queries executed against these tables.

After an ETL process completes, perform VACUUM to ensure that user queries execute in a consistent manner. The complete list of tables that need VACUUMing can be found using the Amazon Redshift Util’s table_info script.

Use the following approaches to ensure that VACCUM is completed in a timely manner:

  • Use wlm_query_slot_count to claim all the memory allocated in the ETL WLM queue during the VACUUM process.
  • DROP or TRUNCATE intermediate or staging tables, thereby eliminating the need to VACUUM them.
  • If your table has a compound sort key with only one sort column, try to load your data in sort key order. This helps reduce or eliminate the need to VACUUM the table.
  • Consider using time series This helps reduce the amount of data you need to VACUUM.
  • Use ANALYZE to update database statistics

Amazon Redshift uses a cost-based query planner and optimizer using statistics about tables to make good decisions about the query plan for the SQL statements. Regular statistics collection after the ETL completion ensures that user queries run fast, and that daily ETL processes are performant. The Amazon Redshift utility table_info script provides insights into the freshness of the statistics. Keeping the statistics off (pct_stats_off) less than 20% ensures effective query plans for the SQL queries.

4. Perform multiple steps in a single transaction

ETL transformation logic often spans multiple steps. Because commits in Amazon Redshift are expensive, if each ETL step performs a commit, multiple concurrent ETL processes can take a long time to execute.

To minimize the number of commits in a process, the steps in an ETL script should be surrounded by a BEGIN…END statement so that a single commit is performed only after all the transformation logic has been executed. For example, here is an example multi-step ETL script that performs one commit at the end:

Begin
CREATE temporary staging_table;
INSERT INTO staging_table SELECT .. FROM source (transformation logic);
DELETE FROM daily_table WHERE dataset_date =?;
INSERT INTO daily_table SELECT .. FROM staging_table (daily aggregate);
DELETE FROM weekly_table WHERE weekending_date=?;
INSERT INTO weekly_table SELECT .. FROM staging_table(weekly aggregate);
Commit

5. Loading data in bulk

Amazon Redshift is designed to store and query petabyte-scale datasets. Using Amazon S3 you can stage and accumulate data from multiple source systems before executing a bulk COPY operation. The following methods allow efficient and fast transfer of these bulk datasets into Amazon Redshift:

  • Use a manifest file to ingest large datasets that span multiple files. The manifest file is a JSON file that lists all the files to be loaded into Amazon Redshift. Using a manifest file ensures that Amazon Redshift has a consistent view of the data to be loaded from S3, while also ensuring that duplicate files do not result in the same data being loaded more than one time.
  • Use temporary staging tables to hold the data for transformation. These tables are automatically dropped after the ETL session is complete. Temporary tables can be created using the CREATE TEMPORARY TABLE syntax, or by issuing a SELECT … INTO #TEMP_TABLE query. Explicitly specifying the CREATE TEMPORARY TABLE statement allows you to control the DISTRIBUTION KEY, SORT KEY, and compression settings to further improve performance.
  • User ALTER table APPEND to swap data from the staging tables to the target table. Data in the source table is moved to matching columns in the target table. Column order doesn’t matter. After data is successfully appended to the target table, the source table is empty. ALTER TABLE APPEND is much faster than a similar CREATE TABLE AS or INSERT INTO operation because it doesn’t involve copying or moving data.

6. Use UNLOAD to extract large result sets

Fetching a large number of rows using SELECT is expensive and takes a long time. When a large amount of data is fetched from the Amazon Redshift cluster, the leader node has to hold the data temporarily until the fetches are complete. Further, data is streamed out sequentially, which results in longer elapsed time. As a result, the leader node can become hot, which not only affects the SELECT that is being executed, but also throttles resources for creating execution plans and managing the overall cluster resources. Here is an example of a large SELECT statement. Notice that the leader node is doing most of the work to stream out the rows:

Use UNLOAD to extract large results sets directly to S3. After it’s in S3, the data can be shared with multiple downstream systems. By default, UNLOAD writes data in parallel to multiple files according to the number of slices in the cluster. All the compute nodes participate to quickly offload the data into S3.

If you are extracting data for use with Amazon Redshift Spectrum, you should make use of the MAXFILESIZE parameter to and keep files are 150 MB. Similar to item 1 above, having many evenly sized files ensures that Redshift Spectrum can do the maximum amount of work in parallel.

7. Use Redshift Spectrum for ad hoc ETL processing

Events such as data backfill, promotional activity, and special calendar days can trigger additional data volumes that affect the data refresh times in your Amazon Redshift cluster. To help address these spikes in data volumes and throughput, I recommend staging data in S3. After data is organized in S3, Redshift Spectrum enables you to query it directly using standard SQL. In this way, you gain the benefits of additional capacity without having to resize your cluster.

For tips on getting started with and optimizing the use of Redshift Spectrum, see the previous post, 10 Best Practices for Amazon Redshift Spectrum.

8. Monitor daily ETL health using diagnostic queries

Monitoring the health of your ETL processes on a regular basis helps identify the early onset of performance issues before they have a significant impact on your cluster. The following monitoring scripts can be used to provide insights into the health of your ETL processes:

Script Use when… Solution
commit_stats.sql – Commit queue statistics from past days, showing largest queue length and queue time first DML statements such as INSERT/UPDATE/COPY/DELETE operations take several times longer to execute when multiple of these operations are in progress Set up separate WLM queues for the ETL process and limit the concurrency to < 5.
copy_performance.sql –  Copy command statistics for the past days Daily COPY operations take longer to execute • Follow the best practices for the COPY command.
• Analyze data growth with the incoming datasets and consider cluster resize to meet the expected SLA.
table_info.sql – Table skew and unsorted statistics along with storage and key information Transformation steps take longer to execute • Set up regular VACCUM jobs to address unsorted rows and claim the deleted blocks so that transformation SQL execute optimally.
• Consider a table redesign to avoid data skewness.
v_check_transaction_locks.sql – Monitor transaction locks INSERT/UPDATE/COPY/DELETE operations on particular tables do not respond back in timely manner, compared to when run after the ETL Multiple DML statements are operating on the same target table at the same moment from different transactions. Set up ETL job dependency so that they execute serially for the same target table.
v_get_schema_priv_by_user.sql – Get the schema that the user has access to Reporting users can view intermediate tables Set up separate database groups for reporting and ETL users, and grants access to objects using GRANT.
v_generate_tbl_ddl.sql – Get the table DDL You need to create an empty table with same structure as target table for data backfill Generate DDL using this script for data backfill.
v_space_used_per_tbl.sql – monitor space used by individual tables Amazon Redshift data warehouse space growth is trending upwards more than normal

Analyze the individual tables that are growing at higher rate than normal. Consider data archival using UNLOAD to S3 and Redshift Spectrum for later analysis.

Use unscanned_table_summary.sql to find unused table and archive or drop them.

top_queries.sql – Return the top 50 time consuming statements aggregated by its text ETL transformations are taking longer to execute Analyze the top transformation SQL and use EXPLAIN to find opportunities for tuning the query plan.

There are several other useful scripts available in the amazon-redshift-utils repository. The AWS Lambda Utility Runner runs a subset of these scripts on a scheduled basis, allowing you to automate much of monitoring of your ETL processes.

Example ETL process

The following ETL process reinforces some of the best practices discussed in this post. Consider the following four-step daily ETL workflow where data from an RDBMS source system is staged in S3 and then loaded into Amazon Redshift. Amazon Redshift is used to calculate daily, weekly, and monthly aggregations, which are then unloaded to S3, where they can be further processed and made available for end-user reporting using a number of different tools, including Redshift Spectrum and Amazon Athena.

Step 1:  Extract from the RDBMS source to a S3 bucket

In this ETL process, the data extract job fetches change data every 1 hour and it is staged into multiple hourly files. For example, the staged S3 folder looks like the following:

 [[email protected] ~]$ aws s3 ls s3://<<S3 Bucket>>/batch/2017/07/02/
2017-07-02 01:59:58   81900220 20170702T01.export.gz
2017-07-02 02:59:56   84926844 20170702T02.export.gz
2017-07-02 03:59:54   78990356 20170702T03.export.gz
…
2017-07-02 22:00:03   75966745 20170702T21.export.gz
2017-07-02 23:00:02   89199874 20170702T22.export.gz
2017-07-02 00:59:59   71161715 20170702T23.export.gz

Organizing the data into multiple, evenly sized files enables the COPY command to ingest this data using all available resources in the Amazon Redshift cluster. Further, the files are compressed (gzipped) to further reduce COPY times.

Step 2: Stage data to the Amazon Redshift table for cleansing

Ingesting the data can be accomplished using a JSON-based manifest file. Using the manifest file ensures that S3 eventual consistency issues can be eliminated and also provides an opportunity to dedupe any files if needed. A sample manifest20170702.json file looks like the following:

{
  "entries": [
    {"url":" s3://<<S3 Bucket>>/batch/2017/07/02/20170702T01.export.gz", "mandatory":true},
    {"url":" s3://<<S3 Bucket>>/batch/2017/07/02/20170702T02.export.gz", "mandatory":true},
    …
    {"url":" s3://<<S3 Bucket>>/batch/2017/07/02/20170702T23.export.gz", "mandatory":true}
  ]
}

The data can be ingested using the following command:

SET wlm_query_slot_count TO <<max available concurrency in the ETL queue>>;
COPY stage_tbl FROM 's3:// <<S3 Bucket>>/batch/manifest20170702.json' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

Because the downstream ETL processes depend on this COPY command to complete, the wlm_query_slot_count is used to claim all the memory available to the queue. This helps the COPY command complete as quickly as possible.

Step 3: Transform data to create daily, weekly, and monthly datasets and load into target tables

Data is staged in the “stage_tbl” from where it can be transformed into the daily, weekly, and monthly aggregates and loaded into target tables. The following job illustrates a typical weekly process:

Begin
INSERT into ETL_LOG (..) values (..);
DELETE from weekly_tbl where dataset_week = <<current week>>;
INSERT into weekly_tbl (..)
  SELECT date_trunc('week', dataset_day) AS week_begin_dataset_date, SUM(C1) AS C1, SUM(C2) AS C2
	FROM   stage_tbl
GROUP BY date_trunc('week', dataset_day);
INSERT into AUDIT_LOG values (..);
COMMIT;
End;

As shown above, multiple steps are combined into one transaction to perform a single commit, reducing contention on the commit queue.

Step 4: Unload the daily dataset to populate the S3 data lake bucket

The transformed results are now unloaded into another S3 bucket, where they can be further processed and made available for end-user reporting using a number of different tools, including Redshift Spectrum and Amazon Athena.

unload ('SELECT * FROM weekly_tbl WHERE dataset_week = <<current week>>’) TO 's3:// <<S3 Bucket>>/datalake/weekly/20170526/' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Summary

Amazon Redshift lets you easily operate petabyte-scale data warehouses on the cloud. This post summarized the best practices for operating scalable ETL natively within Amazon Redshift. I demonstrated efficient ways to ingest and transform data, along with close monitoring. I also demonstrated the best practices being used in a typical sample ETL workload to transform the data into Amazon Redshift.

If you have questions or suggestions, please comment below.

 


About the Author

Thiyagarajan Arumugam is a Big Data Solutions Architect at Amazon Web Services and designs customer architectures to process data at scale. Prior to AWS, he built data warehouse solutions at Amazon.com. In his free time, he enjoys all outdoor sports and practices the Indian classical drum mridangam.

 

Physics cheats

Post Syndicated from Eevee original https://eev.ee/blog/2018/01/06/physics-cheats/

Anonymous asks:

something about how we tweak physics to “work” better in games?

Ho ho! Work. Get it? Like in physics…?

Hitboxes

Hitbox” is perhaps not the most accurate term, since the shape used for colliding with the environment and the shape used for detecting damage might be totally different. They’re usually the same in simple platformers, though, and that’s what most of my games have been.

The hitbox is the biggest physics fudge by far, and it exists because of a single massive approximation that (most) games make: you’re controlling a single entity in the abstract, not a physical body in great detail.

That is: when you walk with your real-world meat shell, you perform a complex dance of putting one foot in front of the other, a motion you spent years perfecting. When you walk in a video game, you press a single “walk” button. Your avatar may play an animation that moves its legs back and forth, but since you’re not actually controlling the legs independently (and since simulating them is way harder), the game just treats you like a simple shape. Fairly often, this is a box, or something very box-like.

An Eevee sprite standing on faux ground; the size of the underlying image and the hitbox are outlined

Since the player has no direct control over the exact placement of their limbs, it would be slightly frustrating to have them collide with the world. This is especially true in cases like the above, where the tail and left ear protrude significantly out from the main body. If that Eevee wanted to stand against a real-world wall, she would simply tilt her ear or tail out of the way, so there’s no reason for the ear to block her from standing against a game wall. To compensate for this, the ear and tail are left out of the collision box entirely and will simply jut into a wall if necessary — a goofy affordance that’s so common it doesn’t even register as unusual. As a bonus (assuming this same box is used for combat), she won’t take damage from projectiles that merely graze past an ear.

(One extra consideration for sprite games in particular: the hitbox ought to be horizontally symmetric around the sprite’s pivot — i.e. the point where the entity is truly considered to be standing — so that the hitbox doesn’t abruptly move when the entity turns around!)

Corners

Treating the player (and indeed most objects) as a box has one annoying side effect: boxes have corners. Corners can catch on other corners, even by a single pixel. Real-world bodies tend to be a bit rounder and squishier and this can tolerate grazing a corner; even real-world boxes will simply rotate a bit.

Ah, but in our faux physics world, we generally don’t want conscious actors (such as the player) to rotate, even with a realistic physics simulator! Real-world bodies are made of parts that will generally try to keep you upright, after all; you don’t tilt back and forth much.

One way to handle corners is to simply remove them from conscious actors. A hitbox doesn’t have to be a literal box, after all. A popular alternative — especially in Unity where it’s a standard asset — is the pill-shaped capsule, which has semicircles/hemispheres on the top and bottom and a cylindrical body in 3D. No corners, no problem.

Of course, that introduces a new problem: now the player can’t balance precariously on edges without their rounded bottom sliding them off. Alas.

If you’re stuck with corners, then, you may want to use a corner bump, a term I just made up. If the player would collide with a corner, but the collision is only by a few pixels, just nudge them to the side a bit and carry on.

An Eevee sprite trying to move sideways into a shallow ledge; the game bumps her upwards slightly, so she steps onto it instead

When the corner is horizontal, this creates stairs! This is, more or less kinda, how steps work in Doom: when the player tries to cross from one sector into another, if the height difference is 24 units or less, the game simply bumps them upwards to the height of the new floor and lets them continue on.

Implementing this in a game without Doom’s notion of sectors is a little trickier. In fact, I still haven’t done it. Collision detection based on rejection gets it for free, kinda, but it’s not very deterministic and it breaks other things. But that’s a whole other post.

Gravity

Gravity is pretty easy. Everything accelerates downwards all the time. What’s interesting are the exceptions.

Jumping

Jumping is a giant hack.

Think about how actual jumping works: you tense your legs, which generally involves bending your knees first, and then spring upwards. In a platformer, you can just leap whenever you feel like it, which is nonsense. Also you go like twenty feet into the air?

Worse, most platformers allow variable-height jumping, where your jump is lower if you let go of the jump button while you’re in the air. Normally, one would expect to have to decide how much force to put into the jump beforehand.

But of course this is about convenience of controls: when jumping is your primary action, you want to be able to do it immediately, without any windup for how high you want to jump.

(And then there’s double jumping? Come on.)

Air control is a similar phenomenon: usually you’d jump in a particular direction by controlling how you push off the ground with your feet, but in a video game, you don’t have feet! You only have the box. The compromise is to let you control your horizontal movement to a limit degree in midair, even though that doesn’t make any sense. (It’s way more fun, though, and overall gives you more movement options, which are good to have in an interactive medium.)

Air control also exposes an obvious place that game physics collide with the realistic model of serious physics engines. I’ve mentioned this before, but: if you use Real Physics™ and air control yourself into a wall, you might find that you’ll simply stick to the wall until you let go of the movement buttons. Why? Remember, player movement acts as though an external force were pushing you around (and from the perspective of a Real™ physics engine, this is exactly how you’d implement it) — so air-controlling into a wall is equivalent to pushing a book against a wall with your hand, and the friction with the wall holds you in place. Oops.

Ground sticking

Another place game physics conflict with physics engines is with running to the top of a slope. On a real hill, of course, you land on top of the slope and are probably glad of it; slopes are hard to climb!

An Eevee moves to the top of a slope, and rather than step onto the flat top, she goes flying off into the air

In a video game, you go flying. Because you’re a box. With momentum. So you hit the peak and keep going in the same direction. Which is diagonally upwards.

Projectiles

To make them more predictable, projectiles generally aren’t subject to gravity, at least as far as I’ve seen. The real world does not have such an exemption. The real world imposes gravity even on sniper rifles, which in a video game are often implemented as an instant trace unaffected by anything in the world because the bullet never actually exists in the world.

Resistance

Ah. Welcome to hell.

Water

Water is an interesting case, and offhand I don’t know the gritty details of how games implement it. In the real world, water applies a resistant drag force to movement — and that force is proportional to the square of velocity, which I’d completely forgotten until right now. I am almost positive that no game handles that correctly. But then, in real-world water, you can push against the water itself for movement, and games don’t simulate that either. What’s the rough equivalent?

The Sonic Physics Guide suggests that Sonic handles it by basically halving everything: acceleration, max speed, friction, etc. When Sonic enters water, his speed is cut; when Sonic exits water, his speed is increased.

That last bit feels validating — I could swear Metroid Prime did the same thing, and built my own solution around it, but couldn’t remember for sure. It makes no sense, of course, for a jump to become faster just because you happened to break the surface of the water, but it feels fantastic.

The thing I did was similar, except that I didn’t want to add a multiplier in a dozen places when you happen to be underwater (and remember which ones need it to be squared, etc.). So instead, I calculate everything completely as normal, so velocity is exactly the same as it would be on dry land — but the distance you would move gets halved. The effect seems to be pretty similar to most platformers with water, at least as far as I can tell. It hasn’t shown up in a published game and I only added this fairly recently, so I might be overlooking some reason this is a bad idea.

(One reason that comes to mind is that velocity is now a little white lie while underwater, so anything relying on velocity for interesting effects might be thrown off. Or maybe that’s correct, because velocity thresholds should be halved underwater too? Hm!)

Notably, air is also a fluid, so it should behave the same way (just with different constants). I definitely don’t think any games apply air drag that’s proportional to the square of velocity.

Friction

Friction is, in my experience, a little handwaved. Probably because real-world friction is so darn complicated.

Consider that in the real world, we want very high friction on the surfaces we walk on — shoes and tires are explicitly designed to increase it, even. We move by bracing a back foot against the ground and using that to push ourselves forward, so we want the ground to resist our push as much as possible.

In a game world, we are a box. We move by being pushed by some invisible outside force, so if the friction between ourselves and the ground is too high, we won’t be able to move at all! That’s complete nonsense physically, but it turns out to be handy in some cases — for example, highish friction can simulate walking through deep mud, which should be difficult due to fluid drag and low friction.

But the best-known example of the fakeness of game friction is video game ice. Walking on real-world ice is difficult because the low friction means low grip; your feet are likely to slip out from under you, and you’ll simply fall down and have trouble moving at all. In a video game, you can’t fall down, so you have the opposite experience: you spend most of your time sliding around uncontrollably. Yet ice is so common in video games (and perhaps so uncommon in places I’ve lived) that I, at least, had never really thought about this disparity until an hour or so ago.

Game friction vs real-world friction

Real-world friction is a force. It’s the normal force (which is the force exerted by the object on the surface) times some constant that depends on how the two materials interact.

Force is mass times acceleration, and platformers often ignore mass, so friction ought to be an acceleration — applied against the object’s movement, but never enough to push it backwards.

I haven’t made any games where variable friction plays a significant role, but my gut instinct is that low friction should mean the player accelerates more slowly but has a higher max speed, and high friction should mean the opposite. I see from my own source code that I didn’t even do what I just said, so let’s defer to some better-made and well-documented games: Sonic and Doom.

In Sonic, friction is a fixed value subtracted from the player’s velocity (regardless of direction) each tic. Sonic has a fixed framerate, so the units are really pixels per tic squared (i.e. acceleration), multiplied by an implicit 1 tic per tic. So far, so good.

But Sonic’s friction only applies if the player isn’t pressing or . Hang on, that isn’t friction at all; that’s just deceleration! That’s equivalent to jogging to a stop. If friction were lower, Sonic would take longer to stop, but otherwise this is only tangentially related to friction.

(In fairness, this approach would decently emulate friction for non-conscious sliding objects, which are never going to be pressing movement buttons. Also, we don’t have the Sonic source code, and the name “friction” is a fan invention; the Sonic Physics Guide already uses “deceleration” to describe the player’s acceleration when turning around.)

Okay, let’s try Doom. In Doom, the default friction is 90.625%.

Hang on, what?

Yes, in Doom, friction is a multiplier applied every tic. Doom runs at 35 tics per second, so this is a multiplier of 0.032 per second. Yikes!

This isn’t anything remotely like real friction, but it’s much easier to implement. With friction as acceleration, the game has to know both the direction of movement (so it can apply friction in the opposite direction) and the magnitude (so it doesn’t overshoot and launch the object in the other direction). That means taking a semi-costly square root and also writing extra code to cap the amount of friction. With a multiplier, neither is necessary; just multiply the whole velocity vector and you’re done.

There are some downsides. One is that objects will never actually stop, since multiplying by 3% repeatedly will never produce a result of zero — though eventually the speed will become small enough to either slip below a “minimum speed” threshold or simply no longer fit in a float representation. Another is that the units are fairly meaningless: with Doom’s default friction of 90.625%, about how long does it take for the player to stop? I have no idea, partly because “stop” is ambiguous here! If friction were an acceleration, I could divide it into the player’s max speed to get a time.

All that aside, what are the actual effects of changing Doom’s friction? What an excellent question that’s surprisingly tricky to answer. (Note that friction can’t be changed in original Doom, only in the Boom port and its derivatives.) Here’s what I’ve pieced together.

Doom’s “friction” is really two values. “Friction” itself is a multiplier applied to moving objects on every tic, but there’s also a move factor which defaults to \(\frac{1}{32} = 0.03125\) and is derived from friction for custom values.

Every tic, the player’s velocity is multiplied by friction, and then increased by their speed times the move factor.

$$
v(n) = v(n – 1) \times friction + speed \times move factor
$$

Eventually, the reduction from friction will balance out the speed boost. That happens when \(v(n) = v(n – 1)\), so we can rearrange it to find the player’s effective max speed:

$$
v = v \times friction + speed \times move factor \\
v – v \times friction = speed \times move factor \\
v = speed \times \frac{move factor}{1 – friction}
$$

For vanilla Doom’s move factor of 0.03125 and friction of 0.90625, that becomes:

$$
v = speed \times \frac{\frac{1}{32}}{1 – \frac{29}{32}} = speed \times \frac{\frac{1}{32}}{\frac{3}{32}} = \frac{1}{3} \times speed
$$

Curiously, “speed” is three times the maximum speed an actor can actually move. Doomguy’s run speed is 50, so in practice he moves a third of that, or 16⅔ units per tic. (Of course, this isn’t counting SR40, a bug that lets Doomguy run ~40% faster than intended diagonally.)

So now, what if you change friction? Even more curiously, the move factor is calculated completely differently depending on whether friction is higher or lower than the default Doom amount:

$$
move factor = \begin{cases}
\frac{133 – 128 \times friction}{544} &≈ 0.244 – 0.235 \times friction & \text{ if } friction \ge \frac{29}{32} \\
\frac{81920 \times friction – 70145}{1048576} &≈ 0.078 \times friction – 0.067 & \text{ otherwise }
\end{cases}
$$

That’s pretty weird? Complicating things further is that low friction (which means muddy terrain, remember) has an extra multiplier on its move factor, depending on how fast you’re already going — the idea is apparently that you have a hard time getting going, but it gets easier as you find your footing. The extra multiplier maxes out at 8, which makes the two halves of that function meet at the vanilla Doom value.

A graph of the relationship between friction and move factor

That very top point corresponds to the move factor from the original game. So no matter what you do to friction, the move factor becomes lower. At 0.85 and change, you can no longer move at all; below that, you move backwards.

From the formula above, it’s easy to see what changes to friction and move factor will do to Doomguy’s stable velocity. Move factor is in the numerator, so increasing it will increase stable velocity — but it can’t increase, so stable velocity can only ever decrease. Friction is in the denominator, but it’s subtracted from 1, so increasing friction will make the denominator a smaller value less than 1, i.e. increase stable velocity. Combined, we get this relationship between friction and stable velocity.

A graph showing stable velocity shooting up dramatically as friction increases

As friction approaches 1, stable velocity grows without bound. This makes sense, given the definition of \(v(n)\) — if friction is 1, the velocity from the previous tic isn’t reduced at all, so we just keep accelerating freely.

All of this is why I’m wary of using multipliers.

Anyway, this leaves me with one last question about the effects of Doom’s friction: how long does it take to reach stable velocity? Barring precision errors, we’ll never truly reach stable velocity, but let’s say within 5%. First we need a closed formula for the velocity after some number of tics. This is a simple recurrence relation, and you can write a few terms out yourself if you want to be sure this is right.

$$
v(n) = v_0 \times friction^n + speed \times move factor \times \frac{friction^n – 1}{friction – 1}
$$

Our initial velocity is zero, so the first term disappears. Set this equal to the stable formula and solve for n:

$$
speed \times move factor \times \frac{friction^n – 1}{friction – 1} = (1 – 5\%) \times speed \times \frac{move factor}{1 – friction} \\
friction^n – 1 = -(1 – 5\%) \\
n = \frac{\ln 5\%}{\ln friction}
$$

Speed” and move factor disappear entirely, which makes sense, and this is purely a function of friction (and how close we want to get). For vanilla Doom, that comes out to 30.4, which is a little less than a second. For other values of friction:

A graph of time to stability which leaps upwards dramatically towards the right

As friction increases (which in Doom terms means the surface is more slippery), it takes longer and longer to reach stable speed, which is in turn greater and greater. For lesser friction (i.e. mud), stable speed is lower, but reached fairly quickly. (Of course, the extra “getting going” multiplier while in mud adds some extra time here, but including that in the graph is a bit more complicated.)

I think this matches with my instincts above. How fascinating!

What’s that? This is way too much math and you hate it? Then don’t use multipliers in game physics.

Uh

That was a hell of a diversion!

I guess the goofiest stuff in basic game physics is really just about mapping player controls to in-game actions like jumping and deceleration; the rest consists of hacks to compensate for representing everything as a box.

Как да допуснем услуги като Uber? [законопроект]

Post Syndicated from Bozho original https://blog.bozho.net/blog/3032

Съдът в Люксембург реши, че Uber е транспортна компания и предоставя таксиметрови услуги. Това е проблем не само за Uber, а за всички по-съвременни начини да предоставяш транспортна услуга, в това число децентрализирани варианти (например чрез блокчейн, въпреки целия ми скептицизъм към публичните такива).

За да бъдат допустими на пазара тези бизнес модели – дали Uber, дали Lyft, дали дори TaxiMe и TaxiStars, към които таксиметровите компании проявяват недоверие и се оптиват да ги изтикат за сметка на свои приложения, трябва законодателството да го позволява. Докато преди това решение Uber оперираше в (според тях) сива зона на нерегулиран бизнес, вече е ясно, че това не е така. И макар Uber да е най-популярният пример, те не са най-светлият такъв – компанията е на загуба и съвсем не е „цвете за мирисане“. Така че всичко недолу не би следвало да се разглежда като „как да узаконим Uber“, а как да не ограничаваме транспорта в градовете до „жълти коли с табелки, светлинки и таксиметрови апарати“.

Както бях писал преди време – регулациите могат да бъдат правени умно, така че да не ограничават технологични бизнес модели, за които регулаторите не са се сетили. За съжаление, Законът за автомобилните превози е доста остарял и със сигурност не допуска нищо различно от кола с таксиметров апарат с фискална памет, която можеш да си спреш на улицата. Освен това режимът, предвиден в закона е доста утежнен дори за съществуващите превозвачи. Първо, трябва да има регистрация на превозвач. След това всеки шофьор полага изпити и получава удостоверение за водач на таксиметров автомобил. Но това удостоверение на му е достатъчно – трябва да получи и разрешение от общината, която да разгледа удостоверението му и регистрацията на превозвача, чрез който ще осъщестява услугата. Не на последно място, законът предвижда общинските съвети да определят максимален брой таксита, както и разпределението им между регистрираните превозвачи. Това последното звучи доста непазарна мярка и със сигурност би ограничило някои по-иновативни модели.

Поради всичко това реших да напиша законопроект за изменение и допълнение на Закона за автомобилните превози. Докато пишех черновата, видях, че Естония вече е направила нещо такова, с доста сходен подход. Основните цели са:

  • Разграничаване на такситата, които можеш да си вземеш на улицата от тези, които можеш да вземеш единствено чрез диспечерска система (дали мобилно приложение, дали по друг начин, няма значение)
  • Допускане на измерване на разстоянието и съответно отчитането пред НАП със средства, различни от таксиметров апарат (например GPS + система, интегрирана с тази на НАП, както са направили в Естония преди време)
  • Улекотяване на регистрационния режим чрез премахване на разрешението от общината – общините, в които оперира даден автомобил се вписват от превозвача в регистъра на Изпълнителна агенция „Автомобилна администрация“, откъдето се черпи информация и за дължимия местен данък.
  • Запазване на данъка за таксиметрови превози към общините
  • Запазване на изискванията за техническа изправност, възраст на автомобилите, психическа годност и липса на присъди на водачите
  • Спазване на принципите на елекетронното управление – извличане на данните за автомобилите от регистъра на КАТ, позволяване на подаване на заявления по електронен път, включително автоматизирано, така че превозвачите да могат да интегрират вътрешните си системи за управление на автопарка с централния регистър. Премахване на задължението от носене на документи от страна на таксиметровите шофьори (като удостоверения) и проверката ми по електронен път
  • Премахване на централизираните изпити и обучения и заменянето им с обучителни материали (де факто прехъвлрне на отговорноста за обучение на шофьорите на превозвачите, които така или иначе имат интерес шофьорите им да не са неадекватни)
  • Премахване на възможността общината да определя размера на пазара и да разпределя участниците в него

Последните две точки са пожелателни, но според мен принципно важни. Ето и самият текст, с мотиви към всеки параграф:

Закон за изменение и допълнение на Закона за автомобилните превози

§1. В чл. 12а се правят следните изменения и допълнения:
1. В ал. 1, т.5 се изменя както следва: „Данни за моторните превозни средства, с които превозвачът извършва превозите:
а) регистрационен номер
б) дали автомобилът ще извършва таксиметров превоз единствено при повикване чрез диспечерска система
в) общините, в които моторното превозно средство ще извършва превози
2. Ал. 2 се отменя;
3. Създава се нова ал. 6: „(6) Заявления за вписване и за промяна на обстоятелства в регистъра, могат да се подават по автоматизирано и по електронен път по реда на Закона за електронното управление“
4. Създава се нова ал. 7: „(7) Обстоятелства за регистрираните автомобили, определени с наредбата по ал. 5, се извличат автоматично на база на регистрационния номер от националния регистър на пътните превозни средства по реда на Закона за електронното управление“
5. Създава се нова ал. 8: „(8) Изпълнителна агенция „Автомобилна администрация“ извъшва автоматизирани проверки за платен данък за таксиметров превоз на пътници и заличава вписаните в регистъра моторни превозни средства, за които данъкът не е платен за съответната година“
6. Създава се нова ал. 9: „(9) Изискванията към външния вид на автомобилите, които са регистрирани за извършване на таксиметров превоз единствено при повикване чрез диспечерска система могат да са различни от тези за останалите автомобили“
7. Създава се нова ал. 10: „(10) Автомобилите, които са регистрирани за извършване на таксиметров превоз единствено при повикване чрез диспечерска система, нямат право да престояват на местата, обозначени за престояване на таксиметрови автомобили“

Мотиви: Регистърът трябва да съдъдржа актуална информация за автомобилите, с които се извършват таксиметров превоз. Тя трябва да може да бъде променяна по елекетронен път, чрез интеграция на информационната система на превозвача с регистъра.
Достатъчно е вписването единствено на регистрационния номер на автомобилите – останалите данни следва да бъдат извличани (при нужда) от националния регистър на превозните средства в МВР, следвайки принципа на еднократното събиране на данни, заложен в Закона за електронното управление.
Премахва се и ограничението за възраст на автомобила при първа регистрация като превозвач – важното изискване е автомобилите да не са над определена възраст (чл. 24). Премахването на това ограничение допуска динамичното променяне на „автопарка“ на превозвача.
Поради отменените по-надолу разпоредби от чл. 24а, в регистъра в ИААА се предвижда водене и на общините, в които съответните автомобили на превозвача извършват дейност. Това се налага с оглед на плащането на данъка върху таксиметровия превоз на пътници.
Въвежда се важно разграничение на автомобилите, извършващи таксиметров превоз – такива, които извършват услугата единствено при повикване чрез диспечерска система (което включва мобилни приложения и както централизирани, така и разпределени диспечерски системи) и други, които могат да бъдат спирани на пътното платено или вземани от предвидени за това места.
Изрично се допуска възможността автомобилите, които няма да бъдат спирани на пътя, да имат неунифициран външен вид (напр. табела „Такси“, жълт цвят и др.), като обаче нямат право да престояват на т.нар. стоянки за таксита.

§2. В чл. 24 се правят следните изменения и допълнения:
1. в ал. 1 след думите „електронен таксиметров апарат с фискална памет“ се добавят думите „или по други начини, позволяващи точно измерване на разстояние и отчитане пред данъчната администрация“, а думите „след издаване на разшрение за таксиметров превоз на пътници“ се заменят с думите „след вписване в регистрите по чл. 12, ал. 2 и по ал. 3, т.5“.
2. в ал. 3, т.5 изменя така: „Вписан е в регистър на водачи, извършващи таксиметров превоз, воден от председателя на Изпълнителна агенция „Автомобилна администрация“
3. ал. 4 се изменя така: „Ръководителят на съответното регионално звено на Изпълнителна агенция „Автомобилна администрация“ вписва лицата, отговарящи на изискванията по ал. 3, т. 1-4 и е декларирало, че се е запознало с обучителна информация, определена с наредбата по чл. 12а, ал. 5. Вписването се подновява на всеки 5 години по заявление на водача.
4. ал. 5 се отменя.
5. ал. 6 се изменя така: „Редът за вписването и подновяването на вписването в регистъра на водачите, извършващи таксиметров превоз, и за доказване на съответствието с изискванията по ал. 3, т. 1-4 се определя с наредбата по чл. 12а, ал. 5., като обстоятелствата, необходими за доказване на изискванията, се събират по служебен път“
6. в ал. 17 думите „отнема със заповед удостоверението на водач на лек таксиметров автомобил“ се заменят с думите „заличава вписването на водач, извършващ таксиметрови превоз“

Мотиви: Носенето на удостоверение е излишно, при положение, че контролиращите органи имат електронен достъп в реално време до регистъра. Поради тази причина изискването за удостоверение се заменя с наличие на вписване в регистъра.
Централизираните обучения не са добър механизъм за информираност на шофьорите (което е видно на практика), но създават административна тежест. Обученията и изпитите се заменят с деклариране (възможно по електронен път) от страна на водача, че се е запознал с обучителните материали. Тези материали могат да бъдат текстови или видео-уроци.
Чрез въвеждане на електронни услуги, водачите ще могат отдалечено и лесно да заявяват вписване в регистъра.
Въвежда се възможност за използване на алтернативни технологии на таксиметровия апарат с фискална памет, като например GPS устройства. С наредба ще бъдат определени условията за интегриране на отчетеното от тези устройства разстояние и съответна цена с данъчната администрация.

§3. В чл. 24а се правят следните изменения и допълнения:
1. ал. 1 се изменя така: „Водач, вписан в регистъра на водачи, извършващи таксиметров превоз, имат право да извършват такъв с всеки автомобил, вписан в регистъра по чл. 12, ал. 2 в рамките на общините, за които е валидно вписването“
2. ал. 2-9 се отменят
3. ал. 10 се изменя така: „Административните органи нямат право да определят ограничения на броя таксиметрови автомобили, опериращи на територията на дадена община“
4. ал. 11 се изменяе така: „Общинските съвети могат да определят минимални и максимални цени за таксиметров превоз на пътници за един километър пробег и за една минута престой по съответната тарифа, валидни за територията на съответната община“

Мотиви: допълнителните административни процедури извън регистрацията на превозвача и на водача са излишна административна тежест. Контролът на таксиметровия пазар от страна на общинския съвет, в т.ч. броя автомобили и тяхното разпределение между превозвачи е потенциален източник на корупция и пречи на конкуренцията.
Чрез регистъра по чл. 12, ал. 2 се събира информация в коя община оперират таксиметровите автомобили. Допуска се един автомобил да оперира в повече от една община, което е приложимо например в курортните комплекси.

§4. В чл. 24б след думите „таксиметровите апарати“ се добавят думите „или другите допустими технологични средства“

Мотиви: с наредба се определят и условията за използване и отчитане на други технологични средства, например GPS устройства.

§5. В чл. 95, се правят следните допълнения:
1. В ал. 1 след думите „таксиметров апарат“ се добавят думите „или друго допустимо технологично средство за отчитане на разстояние“
2. В ал. 2 се създава нова т.3: „3. извършва таксиметрови услуги в община, за която автомобилът, който управлява, не е регистриран в регистъра по чл. 12, ал 2“
§6. В чл. 96, ал. 4 след думите „таксиметров апарат“ се добавят думите „или друго допустимо технологично средство за отчитане на разстояние“

Разбира се, по-сложната част ще бъде коригирането на наредбите след това, включително намирането на начин за признаване на GPS координатите – ясно е, че както такситата имат „помпички“, така и GPS-ите на телефоните могат да бъдат „лъгани“.

Това е само предложение, на база на което да започне обсъждане. Далеч съм от мисълта, че мога да измисля решение на всички проблеми за един следобед. Нямам законодателна инициатива и не мога да го внеса, а и някои от точките може да не са приемливи за таксиметровия бранш, т.е. да трябва да се търсят компромиси. Все пак смятам, че допускането на повече технологични начини за осъществяване на таксиметрова услуга е добър за пазара и за клиентите.

Има ли проблем с приетия от правителство план за управление на Пирин?

Post Syndicated from Bozho original https://blog.bozho.net/blog/3020

Реших да проверя какво точно са приели вчера за Пирин, защото хората взеха да се мятат на амбразурите в социалните мрежи, а детайлите останаха на заден план.

В правителствената информационна система още не са качили документите (обикновено го правят с малко закъснение), но все пак на сайта на правителството има качен проектът на решението: ето тук http://www.government.bg/fce/001/0228/files/T_13.doc . Правя уговорката, че това не е приетото решение, та може да има корекции в последния момент (случват се такива неща с подмяна на листчета в папки минути преди заседание).
Действащият план за управление, който се изменя, е тук (важната част започва от стр. 182): http://pirin.bg/wp-content/uploads/2017/07/Plan-za-uprav.pdf

Промените правят общо взето едно нещо: разрешава се строителството на ски писти и съоръжения в т.нар. „зона за строителство“ и „зона за туризъм“, които са 0,6%+2,2% от територията на парка. Строителството става само след екологична оценка (или поне така пише; дали такава няма да бъде правена проформа е друг въпрос)

„Зоната за строителство“ до момента е допускала строителство на „сгради, пътища и съоръжения“. Това звучи общо, но ще видим след малко какво значи.

Има обаче едно двусмислие в решението – в таблицата на допустимите дейности, строителството става допустима дейност и в „зона за опазване на горските екосистеми и отдих“, която е 45,2% от парка. В съответната точка за тази зона обаче няма промяна, която да позволи строителство там, освен за „водохващане“ (което изглежда оправдано).

Дали това обаче не е хитър начин да се скрие нещо – не знам. Според мен таблицата може да се прецизира и 9-ти ред да се разбие допълнително.

По-интересното обаче е друго – в чл. 21 от Закона за защитените територии се забранява строителство на почти всичко (с някои изключения). Допуска се само ремонт на „спортни съоръжения“. Допуска се строителство на „съоръжения за нуждите на управлението на парка“, към което реферирах няколко абзаца по-нагоре. С изменението на т.1 от нормативната част на плана, на практика законът се нарушава – т.е. планът предвижда възможност за строеж на неща, които законът не допуска.

Тук трябва да се добави и решение на ВАС (Решение № 7214 от 2.10.2001), че ски зоната включва „съоръжения за обслужване на посетители“. Решението е спорно, обаче, тъй като приема, че законът допуска строеж на спортни и други съоръжения, но законът предвижда само техния ремонт. Което тълкуване пък се потвърждава от решение на ВАС по друг казус (№6883 от 09.06.2008 г. на ВАС по адм. д. № 4543 / 2008).

Та, в заключение:
– Зона IIa няма как да е допустима за строителство на писти и лифтове, а ако такова е било намерението, то не е било реализирано, тъй като в текста липсва.
– Измененият план противоречи на чл. 21 от Закона за защитените територии, тъй като позволява строителство на съоръжения, които законът не допуска.

НЕ казвам, че не трябва да има нови писти и нови лифтове. Не знам какво е съотношението на зоните за ски спрямо цялостната територия на планината в други европейски държави. Най-вероятно е добре да има още накъде да се разраства ски туризма.

Но за да стане това ми изглежда, че е необходима промяна на чл. 21 от Закона за защитените територии ИЛИ промяна на границите на парка по реда на глава трета от ЗЗТ.

Така че протестът е обоснован и той е протест както за Пирин, така и за законност.

(Заб.: сега навлизам в темата с Пирин, така че моля коригирайте грешни допускания и заключения, ако видите такива.)

Instrumenting Web Apps Using AWS X-Ray

Post Syndicated from Bharath Kumar original https://aws.amazon.com/blogs/devops/instrumenting-web-apps-using-aws-x-ray/

This post was written by James Bowman, Software Development Engineer, AWS X-Ray

AWS X-Ray helps developers analyze and debug distributed applications and underlying services in production. You can identify and analyze root-causes of performance issues and errors, understand customer impact, and extract statistical aggregations (such as histograms) for optimization.

In this blog post, I will provide a step-by-step walkthrough for enabling X-Ray tracing in the Go programming language. You can use these steps to add X-Ray tracing to any distributed application.

Revel: A web framework for the Go language

This section will assist you with designing a guestbook application. Skip to “Instrumenting with AWS X-Ray” section below if you already have a Go language application.

Revel is a web framework for the Go language. It facilitates the rapid development of web applications by providing a predefined framework for controllers, views, routes, filters, and more.

To get started with Revel, run revel new github.com/jamesdbowman/guestbook. A project base is then copied to $GOPATH/src/github.com/jamesdbowman/guestbook.

$ tree -L 2
.
├── README.md
├── app
│ ├── controllers
│ ├── init.go
│ ├── routes
│ ├── tmp
│ └── views
├── conf
│ ├── app.conf
│ └── routes
├── messages
│ └── sample.en
├── public
│ ├── css
│ ├── fonts
│ ├── img
│ └── js
└── tests
└── apptest.go

Writing a guestbook application

A basic guestbook application can consist of just two routes: one to sign the guestbook and another to list all entries.
Let’s set up these routes by adding a Book controller, which can be routed to by modifying ./conf/routes.

./app/controllers/book.go:
package controllers

import (
    "math/rand"
    "time"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/endpoints"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/dynamodb"
    "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
    "github.com/revel/revel"
)

const TABLE_NAME = "guestbook"
const SUCCESS = "Success.\n"
const DAY = 86400

var letters = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZ")

func init() {
    rand.Seed(time.Now().UnixNano())
}

// randString returns a random string of len n, used for DynamoDB Hash key.
func randString(n int) string {
    b := make([]rune, n)
    for i := range b {
        b[i] = letters[rand.Intn(len(letters))]
    }
    return string(b)
}

// Book controls interactions with the guestbook.
type Book struct {
    *revel.Controller
    ddbClient *dynamodb.DynamoDB
}

// Signature represents a user's signature.
type Signature struct {
    Message string
    Epoch   int64
    ID      string
}

// ddb returns the controller's DynamoDB client, instatiating a new client if necessary.
func (c Book) ddb() *dynamodb.DynamoDB {
    if c.ddbClient == nil {
        sess := session.Must(session.NewSession(&aws.Config{
            Region: aws.String(endpoints.UsWest2RegionID),
        }))
        c.ddbClient = dynamodb.New(sess)
    }
    return c.ddbClient
}

// Sign allows users to sign the book.
// The message is to be passed as application/json typed content, listed under the "message" top level key.
func (c Book) Sign() revel.Result {
    var s Signature

    err := c.Params.BindJSON(&s)
    if err != nil {
        return c.RenderError(err)
    }
    now := time.Now()
    s.Epoch = now.Unix()
    s.ID = randString(20)

    item, err := dynamodbattribute.MarshalMap(s)
    if err != nil {
        return c.RenderError(err)
    }

    putItemInput := &dynamodb.PutItemInput{
        TableName: aws.String(TABLE_NAME),
        Item:      item,
    }
    _, err = c.ddb().PutItem(putItemInput)
    if err != nil {
        return c.RenderError(err)
    }

    return c.RenderText(SUCCESS)
}

// List allows users to list all signatures in the book.
func (c Book) List() revel.Result {
    scanInput := &dynamodb.ScanInput{
        TableName: aws.String(TABLE_NAME),
        Limit:     aws.Int64(100),
    }
    res, err := c.ddb().Scan(scanInput)
    if err != nil {
        return c.RenderError(err)
    }

    messages := make([]string, 0)
    for _, v := range res.Items {
        messages = append(messages, *(v["Message"].S))
    }
    return c.RenderJSON(messages)
}

./conf/routes:
POST /sign Book.Sign
GET /list Book.List

Creating the resources and testing

For the purposes of this blog post, the application will be run and tested locally. We will store and retrieve messages from an Amazon DynamoDB table. Use the following AWS CLI command to create the guestbook table:

aws dynamodb create-table --region us-west-2 --table-name "guestbook" --attribute-definitions AttributeName=ID,AttributeType=S AttributeName=Epoch,AttributeType=N --key-schema AttributeName=ID,KeyType=HASH AttributeName=Epoch,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

Now, let’s test our sign and list routes. If everything is working correctly, the following result appears:

$ curl -d '{"message":"Hello from cURL!"}' -H "Content-Type: application/json" http://localhost:9000/book/sign
Success.
$ curl http://localhost:9000/book/list
[
  "Hello from cURL!"
]%

Integrating with AWS X-Ray

Download and run the AWS X-Ray daemon

The AWS SDKs emit trace segments over UDP on port 2000. (This port can be configured.) In order for the trace segments to make it to the X-Ray service, the daemon must listen on this port and batch the segments in calls to the PutTraceSegments API.
For information about downloading and running the X-Ray daemon, see the AWS X-Ray Developer Guide.

Installing the AWS X-Ray SDK for Go

To download the SDK from GitHub, run go get -u github.com/aws/aws-xray-sdk-go/... The SDK will appear in the $GOPATH.

Enabling the incoming request filter

The first step to instrumenting an application with AWS X-Ray is to enable the generation of trace segments on incoming requests. The SDK conveniently provides an implementation of http.Handler which does exactly that. To ensure incoming web requests travel through this handler, we can modify app/init.go, adding a custom function to be run on application start.

import (
    "github.com/aws/aws-xray-sdk-go/xray"
    "github.com/revel/revel"
)

...

func init() {
  ...
    revel.OnAppStart(installXRayHandler)
}

func installXRayHandler() {
    revel.Server.Handler = xray.Handler(xray.NewFixedSegmentNamer("GuestbookApp"), revel.Server.Handler)
}

The application will now emit a segment for each incoming web request. The service graph appears:

You can customize the name of the segment to make it more descriptive by providing an alternate implementation of SegmentNamer to xray.Handler. For example, you can use xray.NewDynamicSegmentNamer(fallback, pattern) in place of the fixed namer. This namer will use the host name from the incoming web request (if it matches pattern) as the segment name. This is often useful when you are trying to separate different instances of the same application.

In addition, HTTP-centric information such as method and URL is collected in the segment’s http subsection:

"http": {
    "request": {
        "url": "/book/list",
        "method": "GET",
        "user_agent": "curl/7.54.0",
        "client_ip": "::1"
    },
    "response": {
        "status": 200
    }
},

Instrumenting outbound calls

To provide detailed performance metrics for distributed applications, the AWS X-Ray SDK needs to measure the time it takes to make outbound requests. Trace context is passed to downstream services using the X-Amzn-Trace-Id header. To draw a detailed and accurate representation of a distributed application, outbound call instrumentation is required.

AWS SDK calls

The AWS X-Ray SDK for Go provides a one-line AWS client wrapper that enables the collection of detailed per-call metrics for any AWS client. We can modify the DynamoDB client instantiation to include this line:

// ddb returns the controller's DynamoDB client, instatiating a new client if necessary.
func (c Book) ddb() *dynamodb.DynamoDB {
    if c.ddbClient == nil {
        sess := session.Must(session.NewSession(&aws.Config{
            Region: aws.String(endpoints.UsWest2RegionID),
        }))
        c.ddbClient = dynamodb.New(sess)
        xray.AWS(c.ddbClient.Client) // add subsegment-generating X-Ray handlers to this client
    }
    return c.ddbClient
}

We also need to ensure that the segment generated by our xray.Handler is passed to these AWS calls so that the X-Ray SDK knows to which segment these generated subsegments belong. In Go, the context.Context object is passed throughout the call path to achieve this goal. (In most other languages, some variant of ThreadLocal is used.) AWS clients provide a *WithContext method variant for each AWS operation, which we need to switch to:

_, err = c.ddb().PutItemWithContext(c.Request.Context(), putItemInput)
    res, err := c.ddb().ScanWithContext(c.Request.Context(), scanInput)

We now see much more detail in the Timeline view of the trace for the sign and list operations:

We can use this detail to help diagnose throttling on our DynamoDB table. In the following screenshot, the purple in the DynamoDB service graph node indicates that our table is underprovisioned. The red in the GuestbookApp node indicates that the application is throwing faults due to this throttling.

HTTP calls

Although the guestbook application does not make any non-AWS outbound HTTP calls in its current state, there is a similar one-liner to wrap HTTP clients that make outbound requests. xray.Client(c *http.Client) wraps an existing http.Client (or nil if you want to use a default HTTP client). For example:

resp, err := ctxhttp.Get(ctx, xray.Client(nil), "https://aws.amazon.com/")

Instrumenting local operations

X-Ray can also assist in measuring the performance of local compute operations. To see this in action, let’s create a custom subsegment inside the randString method:


// randString returns a random string of len n, used for DynamoDB Hash key.
func randString(ctx context.Context, n int) string {
    xray.Capture(ctx, "randString", func(innerCtx context.Context) {
        b := make([]rune, n)
        for i := range b {
            b[i] = letters[rand.Intn(len(letters))]
        }
        s := string(b)
    })
    return s
}

// we'll also need to change the callsite

s.ID = randString(c.Request.Context(), 20)

Summary

By now, you are an expert on how to instrument X-Ray for your Go applications. Instrumenting X-Ray with your applications is an easy way to analyze and debug performance issues and understand customer impact. Please feel free to give any feedback or comments below.

For more information about advanced configuration of the AWS X-Ray SDK for Go, see the AWS X-Ray SDK for Go in the AWS X-Ray Developer Guide and the aws/aws-xray-sdk-go GitHub repository.

For more information about some of the advanced X-Ray features such as histograms, annotations, and filter expressions, see the Analyzing Performance for Amazon Rekognition Apps Written on AWS Lambda Using AWS X-Ray blog post.

2017-12-27 34c3 ден 1

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3373

Успявам да гледам малко лекции от 34c3 (програма, streaming).

Откриването на Charlie Stross (който ми е от любимите автори) беше доста интересно, с наблюдението, че корпорациите могат да се разглеждат като начална форма на изкуствените интелекти и всякакви интересни следствия от това, струва си да се отдели малко време и да се гледа (не знам дали ще го качи в блога си).

Лекцията за геймифицираната система за социален кредит в Китай не ми каза нещо ново и не беше особено добре представена, но е добре човек да почете за ситуацията.

Харалд Велте разказа за internet-а и BBS-ите от едно време (само че в Германия), като цяло все неща, с които едно време сме си играли. Иво ме пита дали не можем да направим някаква такава лекция или да намерим история на случвалите се неща в България. Мислех си, че вече има такова нещо, ама не мога да го намеря, някой да се сеща за хубава история на ония времена?

Лекцията за Иран имаше малко полезна информация в нея, но основно не си заслужаваше. Лекцията за Саудитска Арабия също нямаше много съдържание.

Лекцията за “Low Cost Non-Invasive Biomedical Imaging” за момента ми е любима, и трябва да си вземем едно такова нещо за в лаба. Звучи като технология, с която си струва да си играем и която може много да подобри работата на всякакви лекари.

“Defeating (Not)Petya’s Cryptography” имаше полезни моменти.

Като успея да изгледам още някакви неща, ще пиша и за тях. Който иска, може директно да ходи в initLab да гледа, тъкмо ще има с кой да коментира 🙂

Update: “The Ultimate Apollo Guidance Computer Talk” се оказа страхотно, особено архитектурата на нещото, която има вид на скалъпена с тел и тиксо.

За испанската съдебна независимост отвътре

Post Syndicated from Йовко Ламбрев original https://yovko.net/spain-judiciary-independence/

Този текст е специално зa тези мои познати и приятели, които продължават да не разбират иронията, с която се отнасям към „независимата съдебна власт“ в Испания и намират паралелите, които правя с България, за прекалени и неуместни. Голяма част от тях ме обвиняват в пристрастия, на които гледам с насмешка не заради друго, а защото те самите отказват да вдигнат глава от собствената си романтична представа и клишета в главите си и да погледнат действителността, с различна нагласа от тази на фенщината към Реал Мадрид например. За разлика от повечето си критици, се старая да защитавам своите „пристрастия“ с факти, които сверявам през два, а понякога и повече канали, а когато източникът е медия, проверявам даже и собствеността и сондирам репутацията им, преди да се позовавам на нея.

Твърдото ми убеждение е, че испанската съдебна система често се ползва за репресии, когато политическата власт не иска да си намокри краката или не може да намери политическо решение. Аз лично съм потресен колко разследвания, арести, обвинения и запокитени в затвора (при това не за кратко време) има буквално ежемесечно в Испания, в които потърпевши са политически противници или критично настроени към властта обикновени хора. Включително за „провинения“ като шеги и вицове в хумористични издания или социални мрежи. Организират се показни съдебни процеси заради провокативни артистични инсталации – наскоро приключи едно такова дело, след което обвиненият в крайна сметка влезе в затвора (за тероризъм!).

Но да оставим моите впечатления и лично мнение настрана. Със сигурност обобщените мнения на 11%-ова извадка от испанските съдии към собственото им ежедневие би трябвало да тежи повече. Затова предлагам да разгледаме едно изследване, в което има доста данни. Предполагам, че някои хора вече са го чели, но са го направили от българска гледна точка. Нека да го погледнем и от испанска, а понеже е големичко, ще резюмирам само това, което мен лично ме стряска най-много.

Изследването е на European Network of Councils for the Judiciary, за периода 2016-2017 и е базирано на отговорите на въпросник, който е попълнен от 11712 съдии от 26 страни (22 от ЕС плюс Албания, Сърбия, Черна гора и Норвегия). Испанските съдии, които са участвали, са 718, или това са 11% от всички съдии в държавата. Числата по-долу са на база техните отговори и се отнасят за обследвания период от две години.

  • 18.1% считат, че през последните две години е имало дела, които са били разпределени към съдии по начин, различен от установената процедура, и с цел да се повлияе на изхода от делото. Испания е лидер в тази класация.
  • 64.3% считат, че съдии са назначавани по критерии, различни от тяхната пригодност и опит. Испания води и тази класация с цели 40% над средното ниво за всички държави в проучването.
  • 77.7% намират, че съдии са били повишавани на база критерии, различни от тяхната пригодност и опит. Испания води и тази черна класация, с повече от 40% над средното ниво.
  • 45% считат, че решения на съдии са били повлияни от действия на медиите (преса, телевизия и радио). Тук Испания отстъпва само на Италия, Хърватска, България и Словакия. А 17% смятат, че решения на съдии са били повлияни от социалните мрежи, като Испания е след Италия, Хърватска, Албания и България.
  • 27.7% считат, че правителството не зачита тяхната независимост като съдии. Това е десетият най-лош резултат. Тук води Полша (с над 70%), следвана от България (с над 50%). 15.5% отбелязват, че собствените им началници в съдилищата не уважават тяхната независимост. Това е вторият най-лош резултат след Португалия (21.7%). А 25.6% считат, че тяхната независимост не се уважава от Съдебния съвет. Испания е отново лидер с повече от 20% над средното ниво (като тук се отбелязва, че не всички държави имат такъв орган). България и Португалия следваме испанците плътно и в този срам.
  • 62.2% считат, че Съдебният съвет не разполага с нужните механизми и процедури да защити ефективно независимостта на съдебната власт. Това е вторият най-лош резултат в Европа (след Полша).
  • 10% признават, че през последните две години им е оказван неуместен натиск да вземат решение по дело по определен начин. Испания е петата страна по „натиск“ след Албания (24%), Хърватска (12%), Литва (12%) и Латвия (11%).
  • 10% признават, че са били санкционирани или са били заплашени, че ще бъдат санкционирани за това как са решили дадено дело. Испания е шеста по този критерий след Литва (19%), Латвия (18%), Полша (14%), Румъния (14%) и Италия (11%).
  • 25.6% са били притискани от администрацията на съда им да решат дадено дело в определен срок. Испания е четвърта след Хърватска, Полша и Словения.

Нямам коментар. Числата говорят.

Оригинален линк: “За испанската съдебна независимост отвътре” • Някои права запазени

За 2018 година без излишен оптимизъм

Post Syndicated from Йовко Ламбрев original https://yovko.net/2018-without-optimism/

От самото начало бързам да заявя, че този текст няма да е песимистичен. Уточнявам го, защото черно-бялото мислене у нас е еталон за преценка на всичко. Ако не си весел, значи си тъжен; ако не си умен, си тъп; ако не си десен, не може да си нищо друго освен ляв, даже направо комунист. Няма средно положение. Какви са тези уклончиви работи – уточни се, мама ти стара, че иначе объркваш хората! Та се уточнявам… ама не за да улеснявам някого. Защото, щем – не щем, живеем сложен живот и нещата няма как да са простички.

Не съм песимист за 2018 година, защото има достатъчно причини да гледаме на следващите няколко месеца с надежда. Добрите новини са свързани с подема на икономиката (и у нас, и в Европа) и с очакванията за още повече ръст, и с липсата на някакви кой знае какви очаквани събития, отключващи потенциални сътресения. В европейски контекст най-интересни може би ще са парламентарните избори в Унгария и Италия и вероятно локалните във Великобритания. От президентските избори в Русия едва ли можем да очакваме нещо различно, но пък изборите през ноември в САЩ вероятно ще са много любопитни.

Липсата на излишен оптимизъм е свързана с България. И с наблюдението, че картелът, който управлява държавата (и политическият му параван) става все по-безочлив и дебелокож. Липсата на критична парламентарна опозиция (ако изобщо може да говорим за каквато и да била опозиция в текущия парламент), отсъствието на четвъртата власт – медиите, като фактор в политическия живот (чрез обсебването им или чриз притискане на собствениците им), и липсата на критична маса гражданска (ре)активност – тези три отсъствия съвсем естествено водят до липсваща демокрация в държавата ни.

За жалост нищо не показва, че през 2018 година това ще се промени, а пропиляването на още една година във вегетативен комфорт отдалечава с много повече време реформите, възстановяването на репутацията на институциите и завръщането на смисъла в тях.

Ние не живеем в демокрация. Прекрачихме прага на опасен тоталитаризъм, който е прикриван зад формална многопартийна система и приватизирани институции. Държавата продължава да се управлява невидимо, с SMS-и, от клика с тежки икономическо-мафиотски взаимоотношения. Нашата корпоратокрация е по-опасна от всяка друга, защото кукловоди продължават да са старите ченгеджийски фамилии, независимо дали се крият зад уж леви, десни или либерални партии. Ако позволим на този нов тоталитаризъм да се установи като нова нормалност, накъдето вече сме се запътили, сме загубени. Заедно с няколко от бъдещите поколения, а най-големият срам ще е да ги обречем на нов преход.

Ключово е да осъзнаем, че сме напълно сами в тази битка. Европейският съюз е затънал в умопомрачително безсилие. Текущият европейски политически елит в последните няколко години не само показа, че трудно управлява кризи (Гърция, мигрантите), но не успява да разпознае и предотврати и задаващи се такива, които имат достатъчно лесни решения (Каталуния). Брюксел все повече изглежда като политическа кооперация, в която формално съкооператорите се събрали да се трудят заедно, но в действителност внимават единствено да не бъдат ощетени откъм права или блага, а малко се вълнуват от общите си задължения.

За съжаление, както писах вчера по друг повод, дали защото не сме заслужили с кой знае какво да сме част от ЕС и ни пуснаха да се шмугнем през задната врата само за да не объркаме маршрутката, сега нашите проблеми нямат особена стойност. Европа, вглъбена в далеч по-важните си грижи, е напълно доволна откъм нас да не се вдига много шум. Което съвпада напълно и с гледната точка на нашенеца в ролята на гратисчия, който се е качил без билетче в автобуса и трепери да не го спипа кондукторът.

Русия ще се възползва максимално от ситуацията, за да държи в изкушение нашия политически картел с орбитата на вечната дружба. Те никога няма да се откажат от това. А той, картелът, така или иначе там му е пъпната връв. Не можем да разчитаме, че в Русия ще се случи нещо, което да ги преориентира към собствените им грижи, за да ни оставят на мира. Напротив. Евентуален нов руски икономически колапс вероятно ще бъде прикриван максимално дълго зад ескалации на замразени конфликти или създаване на нови (специалитет на Путин), а ние сме твърде интересни и твърде близо, за да ни е спокойно. Комшулукът с Ердоган не прави нещата по-розови. Докато Тръмп е в Белия дом, оттам ще се лее предимно непредвидимост. А в НАТО и ООН се отразява същата повсеместна посредственост, безсилие и липса на световно лидерство.

На този фон ние можем да проспим 2018 година и от кръчмите и кафенетата да наблюдаваме радикализацията и профанизацията по света, да сме безразлични към проблемите около нас, да спечелим безусловно световната титла по Facebook многознайство, да се делим и мразим едни други и да оставим да ни разиграват политици на дистанционно управление или журналисти с евтино купена съвест, докато всичко, за което страдаха родителите ни и бабите и дядовците ни, отиде по дяволите.

Можем и друго – например да се съпротивляваме ежедневно, да задаваме неудобни въпроси, да изискваме отчетност и истинска политика, да не купуваме, гледаме или четем свински медии и да си върнем демокрацията и държавата, която час по-рано трябва да се преизгради като модерен и деен участник в един динамичен, различен и много свързан свят. Никой не може да ни спре да искаме по-добро бъдеще. Никой не може и да ни отнеме свободата, ако не се откажем сами от нея. Само от нас зависи да върнем обратно тази блудкава безвкусица, която ни сервират ежедневно, и да я плиснем във врата на некадърните готвачи и техните сервитьорчета. И никой не може да ни спре!

2017-12-25 равносметка

Post Syndicated from Vasil Kolev original https://vasil.ludost.net/blog/?p=3372

Седя и си мисля за писането равносметка за годината…

В някакъв ред, какво се случи тая година:

– Роди се Ба’ал (официално известен като Игнат);
– Направихме OpenFest 2017, който въпреки новото място мина доста по-лесно;
(write-up-а за мрежата му се надявам да го изкарам тая година)
– Основа се “Да, България” (на която съм член);
– Избута се и FOSDEM 2017 (и следва 2018, където даже ще водя звяра);
Ожених се;
– Омъжихме и Яна, и разни други хора (май се събраха три сватби тая година);
– Почнах работа в StorPool (и сега интервюирам повече за админи, отколкото за developer-и, и всеки ден откривам как нещо от света около мен не работи);
– Свършихме някакви неща с лаба, като последното е да си имаме podcast студио (в което може да запишем тая година един лабов такъв);
– С Мариян си взехме половин rack в 3DC и си събрахме техниката на едно място, с наш ASN и връзки. Някой ден трябва да го разпиша по-подробно;
– Организирах/правих/помагах в stream-ването и видеото на поне 10 събития;
– Почина най-малката ми братовчедка.

Имам един файл, който е в git и в който си пиша какво имам да правя (нещо като календар, ама допотопен), и май не съм имал много време да си почивам тая година. Може да се опитам догодина…

Германия: нарушава ли Facebook конкурентното право

Post Syndicated from nellyo original https://nellyo.wordpress.com/2017/12/22/facebook-9/

Конкурентният регулатор Bundeskartellamt е уведомил писмено дружеството Facebook за предварителната си правна оценка в процедура за злоупотреба с господстващо положение, която органът провежда срещу Facebook. На настоящия етап от производството органът приема, че Facebook има господстващо положение на германския пазар за социални мрежи. Органът смята, че Facebook злоупотребява с това господстващо положение и събира неограничен брой данни, вкл. чрез сайтове на трети страни  – или собственост на Facebook, като например WhatsApp или Instagram – или  сайтове и приложения на други оператори с вградени приложни програмни интерфейси (API) във Facebook.Участието във Facebook е под условие  – неограничено одобрение на Общите условия. На потребителите се дава възможност да приемат  целия пакет  или да  откажат ползването на социалната мрежа. Представител на конкурентния регулатор казва, че потребителите не винаги са дали своето ефективно съгласие за проследяването на данните   и обединяването на данните в съответния Facebook профил.

Bundeskartellamt по-специално се фокусира върху събирането и използването на потребителски данни от  трети страни.  Потребителите не могат да очакват данни, които се генерират, когато използват услуги, различни от Facebook, да бъдат добавени към техния профил във Facebook в тази степен – но в действителност данни  се предават от уебсайтове и приложения към Facebook.  Според конкурентния регулатор потребителите трябва да имат повече контрол над тези процеси и Facebook трябва да им предостави подходящи възможности за ефективно ограничаване на подобно  събиране на данни.

Производство има и във Франция, но то се осъществява от регулатора за защита на данните по повод обмена на данни между WhatsApp и Facebook.

Filed under: Digital, EU Law Tagged: dp, FB

Хазарт: ЕК прекратява производства за нарушения

Post Syndicated from nellyo original https://nellyo.wordpress.com/2017/12/22/eu_gambling/

Интересно съобщение  на Европейската комисия, засягащо хазарта онлайн, баланса публично – частно и защитата на обществения интерес. Браво на Комисията.

От съобщението:

В съответствие с политическия си ангажимент за по-стратегически подход при прилагането на правото на ЕС, Европейската комисия реши  да прекрати производствата за установяване на нарушение и обработването на жалби в сектора на хазартните игри. От самото начало на работата си Комисията „Юнкер“ съсредоточава усилията си върху политическите си приоритети и ги преследва енергично. Този политически подход е отразен и в начина, по който Комисията работи по случаи, свързани с установяване на нарушения. В Съобщението „Право на ЕС: по-добри резултати чрез по-добро прилагане“ се установява подхода на Комисията във връзка със стратегическото определяне на приоритетите по случаите, като внимателно се претеглят различните публични и частни интереси, които са засегнати.

В този дух Комисията реши  да прекрати производствата за установяване на нарушения в областта на хазартните игри по интернет, както и работата по съответни жалби срещу редица държави членки.

Съдът на ЕС е признавал многократно правата на държавите членки да ограничават услугите в областта на хазартните игри, когато това е необходимо за защитата на целите от обществен интерес, като например защитата на малолетните и непълнолетните, борбата с пристрастяването към хазарта и борбата с нередностите и измамите. Комисията признава по-голямата политическа легитимност на целите от обществен интерес, които държавите членки преследват с регулирането на услугите в областта на хазартните игри.

Комисията отбелязва също така усилията на държавите членки да модернизират правната си уредба в областта на хазартните игри по интернет, да пренасочат търсенето на хазартни игри от страна на гражданите от нерегламентираното предлагане към разрешени и контролирани уебсайтове, и да гарантират, че стопанските субекти плащат данъци.

С оглед на това Комисията няма за приоритет да използва правомощията си във връзка с установяването на нарушения, за да насърчава единен пазар на ЕС в областта на услугите за хазартни игри по интернет.

Комисията ще продължи да подкрепя държавите членки в усилията им да модернизират националната си правна уредба в областта на хазартните игри по интернет и да улеснява сътрудничеството между националните регулаторни органи в областта на хазарта.

За повече информация вж. пълното съобщение за медиите.

Filed under: Digital, EU Law

Съд на ЕС: писмените отговори по време на изпит като лични данни

Post Syndicated from nellyo original https://nellyo.wordpress.com/2017/12/20/dp-22/

Стана известно решението на Съда на ЕС по дело  C‑434/16  с предмет преюдициално запитване, отправено на основание член 267 ДФЕС от Supreme Court (Върховен съд, Ирландия)   в рамките на производство по дело Peter Nowak срещу Data Protection Commissioner.

Преюдициалното запитване се отнася до тълкуването на Директива 95/46/ЕО на Европейския парламент и на Съвета от 24 октомври 1995 година за защита на физическите лица при обработването на лични данни.

 В качеството си на стажант експерт-счетоводител г‑н Nowak издържа успешно определени изпити, но има и такъв, който не издържа. Във връзка с това той подава молба за достъп до всички засягащи го лични данни, съхранявани от професионалната организация на експерт-счетоводителите. Организацията  отказва да му предостави неговата писмена изпитна работа, с довода че тя не съдържала лични данни по смисъла на Закона за защита на данните. Комисарят за защита на данните също смята, че “тези материали по принцип не представляват лични данни“. Nowak обжалва и ирландският съд пита:

„1)      Може ли информацията, записана в/като отговори, дадени от кандидат по време на изпит за професионални умения, да се квалифицира като лични данни по смисъла на Директива 95/46?

2)      При отговор на първия въпрос в смисъл, че цялата или част от информацията може да бъде квалифицирана като лични данни по смисъла на тази директива, какви фактори са релевантни, за да се прецени дали в конкретен случай такава писмена работа представлява лични данни, и каква тежест трябва да се придаде на тези фактори?“.

Съдът на ЕС:

В член 2, буква а) от Директива 95/46 личните данни са определени като „всяка информация, свързана с идентифицирано или подлежащо на идентификация лице“.  Всъщност употребата на израза „всяка информация“ в определението на понятието „лични данни“ в член 2, буква а) от Директива 95/46 отразява целта на законодателя на Съюза да придаде широк смисъл на това понятие, което не се свежда до чувствителната информация или информацията с частен характер, а потенциално обхваща всякакъв вид информация, както обективна, така и субективна, под формата на становища или преценки, при условие че „засяга“ съответното лице.[34]

Що се отнася до коментарите на проверителя по отговорите на кандидата, налага се изводът, че и те като отговорите, дадени от кандидата по време на изпита, представляват информация, засягаща този кандидат. [42] Съдържанието на тези коментари съответно е отражение на становището или преценката на проверителя относно индивидуалните резултати, постигнати от кандидата по време на изпита, и по-специално относно неговите знания и умения в съответната област.[43] Всъщност една и съща информация може да засяга няколко физически лица и съответно за тях да представлява лични данни по смисъла на член 2, буква а) от Директива 95/46, при условие че тези лица са идентифицирани или могат да бъдат идентифицирани.[45]

В този контекст следва да се отбележи, че защитата на основното право на личен живот по-специално предполага всяко физическо лице да може да се увери, че засягащите го лични данни са точни и се обработват законосъобразно. Както следва от съображение 41 от Директива 95/46, именно за да може да извърши необходимите проверки, по силата на член 12, буква а) от тази директива съответното лице разполага с право на достъп до данните, които го засягат и са предмет на обработка. Това право на достъп е необходимо по-специално за да се даде възможност на лицето при необходимост да изиска от администратора да поправи, изтрие или блокира неговите данни и така да упражни правото по член 12, буква б) от посочената директива [57]

Накрая, трябва да се констатира, от една страна, че правата на достъп и на поправяне по член 12, букви а) и б) от Директива 95/46 не обхващат изпитните въпроси, които сами по себе си не представляват лични данни на кандидата.[58] Бегло се констатира още, че правата на лицето подлежат на ограничения както по Директива 95/46, така и по новия  Регламент 2016/679, който я заменя – “ако подобно ограничаване представлява необходима мярка за гарантиране на правата и свободите на други лица.”

Член 2, буква а) от Директива 95/46/ЕО   трябва да се тълкува в смисъл, че при условия като тези в главното производство писмените отговори, дадени от кандидат по време на изпит за професионални умения, и евентуалните коментари на проверителя по тези отговори представляват лични данни по смисъла на тази разпоредба.

След решението на ЕСПЧ, от което разбрахме, че преподаването е социално взаимодействие и част от личния живот на преподавателя, сега от Съда на ЕС научаваме още и за личните аспекти на социалното взаимодействие изпитване.

Filed under: Digital, EU Law, Media Law Tagged: dp, съд на ес

Полша: ЕК предлага прилагане на чл. 7 ДЕС

Post Syndicated from nellyo original https://nellyo.wordpress.com/2017/12/20/%D0%BF%D0%BE%D0%BB%D1%88%D0%B0-%D0%B5%D0%BA-%D0%BF%D1%80%D0%B5%D0%B4%D0%BB%D0%B0%D0%B3%D0%B0-%D0%BF%D1%80%D0%B8%D0%BB%D0%B0%D0%B3%D0%B0%D0%BD%D0%B5-%D0%BD%D0%B0-%D1%87%D0%BB-7-%D0%B4%D0%B5%D1%81/

Изминаха две години от политическите дебати за състоянието на върховенството на закона в Полша.

Вече ЕС разполага и с междинния инструмент на новата рамка за защита на върховенството на закона и ценностите на ЕС – при ясни признаци на системни заплахи за върховенството на закона – но за две години очевидно ЕК не намира съществен напредък въпреки прилагането на новата рамка.

Днес ЕК е приела заключение, че съществува очевиден риск от тежко нарушение на върховенството на закона в Полша.

Ето защо Европейската комисия предлага на Съвета да приеме решение съгласно член 7 (параграф 1) от Договора за ЕС. Той предвижда механизъм, при който с мнозинство от четири пети членовете на Съвета, могат да констатират очевиден риск от тежко нарушение от държава от ЕС на общите ценности, посочени в член 2 от Договора, и да отправят официално предупреждение към Полша от името на ЕС.

Констатацията на Комисията:

Правосъдните реформи в Полша доведоха до това, че съдебната система в страната е под политически контрол на управляващото мнозинство. Когато няма съдебна независимост, възникват сериозни опасения за ефективното прилагане на законодателството на ЕС – от защитата на инвестициите до взаимното признаване на съдебни решения в сферата на попечителството над деца или изпълнението на Европейски заповеди за арест.

 Комисията определя срок три месеца за реакция на полските власти.

Прессъобщението на ЕК от днес

Чл. 7 ДЕС:

1.   По мотивирано предложение на една трета от държавите-членки, на Европейския парламент или на Европейската комисия Съветът, с мнозинство от четири пети от своите членове, след като получи одобрение от Европейския парламент, може да констатира наличието на очевиден риск от тежко нарушение от държава-членка на ценностите, посочени в член 2. Преди да направи тази констатация, Съветът изслушва въпросната държава-членка и може да отправи препоръки към нея, като действа съгласно същата процедура.

Съветът редовно проверява дали основанията за такава констатация продължават да са налице.

2.   Европейският съвет, като действа с единодушие, по предложение на една трета от държавите-членки или на Европейската комисия, след като получи одобрение от Европейския парламент, може да установи наличието на тежко и продължаващо нарушение на ценностите, посочени в член 2 от страна на дадена държава-членка, след като покани тази държава-членка да представи своята позиция.

3.   Когато е направена констатация по параграф 2, Съветът може с квалифицирано мнозинство да вземе решение за спирането на някои права, произтичащи от прилагането на Договорите по отношение на въпросната държава-членка, включително и на правото на глас на представителя на правителството на тази държава-членка в Съвета. Като прави това, Съветът взема под внимание възможните последици от такова спиране върху правата и задълженията на физическите и юридическите лица.

Във всеки случай задълженията на въпросната държава-членка според Договорите продължават да бъдат обвързващи за нея.

4.   Съветът може впоследствие с квалифицирано мнозинство да вземе решение да измени или отмени мерките, взети въз основа на параграф 3, в отговор на промените в ситуацията, която е довела до тяхното налагане.

5.   Условията и редът за гласуване, които, за целите на настоящия член, се прилагат за Европейския парламент, за Европейския съвет и за Съвета, са определени в член 354 от Договора за функционирането на Европейския съюз.

Filed under: EU Law

Students and Youths Offered $10 to Pirate Latest Movies in Cinemas

Post Syndicated from Andy original https://torrentfreak.com/students-and-youths-offered-10-to-pirate-latest-movies-in-cinemas-171219/

In common with most other countries, demand for movies is absolutely huge in India. According to a 2015 report, the country produces between 1,500 and 2,000 movies each year, more than any other country in the world.

But India also has a huge piracy problem. If a movie is worth watching, it’s pirated extremely quickly, mostly within a couple of days of release, often much sooner. These early copies ordinarily come from “cams” – recordings made in cinemas – which are sold on the streets for next to nothing and eagerly snapped up citizens. Who, incidentally, are served by ten times fewer cinema screens than their US counterparts.

These cam copies have to come from somewhere and according to representatives from the local Anti-Video Piracy Committee, piracy groups have begun to divert “camming” duties to outsiders, effectively decentralizing their operations.

Their targets are said to be young people with decent mobile phones, students in particular. Along with China, India now has more than a billion phone users, so there’s no shortage of candidates.

“The offer to youngsters is that they would get 10 US dollars into their bank accounts, if they videographed and sent it on the first day of release of the film,” says Raj Kumar, Telugu Film Chamber of Commerce representative and Anti-Video Piracy Committee chairman.

“The minors and youngsters are getting attracted to the money, not knowing that piracy is a crime,” he adds.

Although US$10 sounds like a meager amount, for many locals the offer is significant. According to figures from 2014, the average daily wage in India is just 272 Indian Rupees (US$4.24) so, for an hour or two’s ‘work’ sitting in a cinema with a phone, a student can, in theory, earn more than he can in two days employment.

The issue of youth “camming” came up yesterday during a meeting of film producers, Internet service providers and cybercrime officials convened by IT and Industries Secretary Jayesh Ranjan.

The meeting heard that the Telangana State government will soon have its own special police officers and cybercrime experts to tackle the growing problem of pirate sites, who will take them down if necessary.

“The State government has adopted a no-tolerance policy towards online piracy of films and will soon have a plan in place to tackle and effectively curb piracy. We need to adopt strong measures and countermeasures to weed out all kinds of piracy,” Ranjan said.

The State already has its own Intellectual Property Crimes Unit (IPCU) but local officials have complained that not enough is being done to curb huge losses faced by the industry. There have been successes, however.

Cybercrime officials previously tracked down individuals said to have been involved in the piracy of the spectacular movie Baahubali 2 – The Conclusion which became the highest grossing Indian film ever just six days after its release earlier this year. But despite the efforts and successes, the basics appear to elude Indian anti-piracy forces.

During October 2017, a 4K copy of Baahubali 2 was uploaded to YouTube and has since racked up an astonishing 54.7m views to the delight of a worldwide audience, many of them enjoying the best of Indian cinema for the first time – for free.

Still, the meeting Monday found that sites offering pirated Indian movies should be targeted and brought to their knees.

“In the meeting, the ISPs too were asked to designate a nodal officer who can keep a watch over websites which upload such data onto their websites and bring them down,” a cybercrime police officer said.

Next stop, YouTube?

Source: TF, for the latest info on copyright, file-sharing, torrent sites and more. We also have VPN discounts, offers and coupons