Playwright-perl: Perl Bindings for Playwright

playwright-perl 

Perl bindings for playwright, the amazing cross browser testing framework from Microsoft

Has this ever happened to you?

You're writing some acceptance test with Selenium::Remote:Driver, but you figure out selenium is a dead protocol? Finally, a solution!

Here's how it works

A little node webserver written in express is spun up which exposes the entire playwright API. We ensure the node deps are installed in a BEGIN block, and then spin up the proxy server. You then use playwright more or less as normal; see the POD in Playwright.pm for more details.

See example.pl for usage examples.

Supported Perls

Everything newer than 5.28 is supported.

Things should work on 5.20 or newer, but... Tests might fail due to Temp file weirdness with Test::MockFile.

Supported OS

Everything seems to work fine on OSX and Linux.

On Windows, you will have to approve a UAC prompt to exempt playwright_server from being firewalled off.

How2develop

Everything should more or less set itself up automatically, or explode and tell you what to do. I assume you know how to get cpanm.

You might want to use distro packages for some of these:

sudo cpanm Dist::Zilla
dzil authordeps --missing | sudo cpanm
dzil listdeps --missing | sudo cpanm

From there you'll need nvm to get the latest verison of node working:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install
nvm use

Running dzil test should let you know if your kit is good to develop.

Actually running stuff will look like this after you generate the API json and modules:

PATH="$(pwd)/bin:$PATH" perl -Ilib example.pl

Dealing with api.json and generating modules

Playwright doesn't ship their api.json with the distribution on NPM. You have to generate it from their repo.

clone it in a directory that is the same as the one containing this repository. then run generate_api_json.sh to get things working such that the build scripts know what to do.

Then run generate_perl_modules.pl to get the accessor classes built based off of the spec, and insert the spec JSON into the playwright_server binary.

To make life simple, you can just run run_example in the TLD when debugging.

Questions?

Hop into the playwright slack, and check out the #playwright-perl channel therein. I'm watching that space and should be able to answer your questions. https://aka.ms/playwright-slack

Apparently Microsoft is trying to migrate to Github's built in forums, so I've activated discussions on this project too (see the tab at the top).

Author: Teodesian
Source Code: https://github.com/teodesian/playwright-perl 
License: MIT license

#node #playwright #perl 

Playwright-perl: Perl Bindings for Playwright
野村  陽一

野村 陽一

1644664800

言語別の最高賃金プログラマートップ10

他のほとんどの業界と比較して、テクノロジーのトレンドはより速い速度で変化します。コーディングの世界への新たな貢献により、以前は業界標準であったプログラミング言語は時代遅れになる可能性があります。どの言語がより人気があり、テクノロジービジネスで需要が高まっているかを知ることは、専門的な決定を下すのに役立つかもしれません。この記事では、プログラミング言語とは何か、そしてどの言語がプログラマーに最もお金を払っているのかを見ていきます。

プログラミング言語とは何ですか?

プログラミング言語は、コンピューターまたはソフトウェアの操作方法を教える一連の命令です。エンジニアは約700のプログラミング言語を使用して、ウェブサイトやアプリを構築し、データベースを構築し、デジタルインフラストラクチャを維持しています。プログラミング言語はすべて、技術活動を導くという同じ目標を持っていますが、プログラマーがそれらと対話する方法は、プロジェクトの要件と個人的な好みによって異なります。

プログラマーは、使用する予定のハードウェア、ソフトウェア、またはシステムに簡単に接続できる言語を頻繁に選択し、技術コミュニティから優れたフィードバックとレビューを受けています。プログラミング言語の人気は、流暢なプログラマーの需要を高め、その結果、雇用が創出され、賃金が高くなります。

最高額のプログラミング言語トップ10

C

Cは、最も古いものの1つであるにもかかわらず、最も使用されているプログラミング言語の1つです。Cは、1972年にアメリカのコンピューター科学者によって作成された汎用プログラミング言語です。プログラマーがそれを使って作成できるものを制限するものではありません。Cプログラミング言語は、Java、JavaScript、PHPなどの他の広く使用されているコンピューター言語の基盤です。Statistaによると、C言語プログラマーは、役職と専門知識の量に応じて、オペレーティングシステム、データベース、およびコンパイラーの構築で年間平均125,00ドルを稼いでいます。

行け

Goは、しばしばGolangとして知られ、2007年に作成され、2009年にリリースされました。Goは、JavaやPHPと同様に、Cプログラミング言語に基づいており、C ++およびJavaの代替として意図されていました。コードホスティングポータルのGitHubによると、これは最も急速に成長しているプログラミング言語の1つです。Goは、大規模なネットワークサーバーや分散システムでプログラマーが使用するシステムレベルのプログラミング言語です。Statistaによると、オープンソースプラットフォームを使用することで、Goプログラマーは年間平均140,000ドルを稼ぎます。他のビジネスの中でも、Goプログラマーは、ストリーミングサービス、ファイル共有プログラム、およびオーディオ配信プラットフォームを扱っています。

Haskell

Haskellは1990年に最初に発行されました。この言語は、ML、Hope、Mirandaなどの前任者によって提起された問題に対処するために委員会によって設計されました。Haskellは、プログラマーが機能ブロックコーディングの研究と教育に使用しています。開発期間の短縮、優れた信頼性、およびよりクリーンなコードはすべて、この言語の利点です。ACM Haskellシンポジウムは、言語に関する情報を収集して共有するために、開発者によって毎年開催されています。Statistaによると、Haskellプログラマーは年間平均121,000ドルを稼いでいます。

Kotlin

Kotlinは2011年に最初に導入され、2017年までに、Android開発の公式プログラミング言語としての地位を確立しました。これはJavaに似ていますが、プログラマーが同じタスクを実行するために記述するコードを少なくする必要がある点が異なります。Kotlinには、プログラマーが一般的なプログラミングエラーを回避するのを支援する関数も含まれています。GitHubによると、Kotlinは、Goと同様に、最も急速に成長しているプログラミング言語の1つです。Statistaによると、Kotlinプログラマーは、マルチプラットフォームのモバイルサーバーサイドWebフロントエンド言語を使用して、年間平均13万ドルを稼いでいます。検索エンジン、モバイル決済会社、プロジェクト管理システムなどの業界では、Kotlinプログラマーを使用しています。

Objective C

Objective Cは1980年代に発明されましたが、マスマーケットの仮想アプリケーションストアが一般に公開された2000年代にさらに有名になりました。GoやJavaのようなObjective-Cは、C言語の「スーパーセット」として宣伝されています。その主な目的は、iOSアプリとオペレーティングシステムを作成することです。Statistaによると、Swiftのリリース以降人気が低下したにもかかわらず、この言語はプログラマーに年間平均135,000ドルを支払うのに十分な人気があります。

迅速

Swiftは2014年にリリースされ、2010年代後半にすぐに最も人気のあるプログラミング言語の1つになりました。これは、モバイルデバイスとデスクトップデバイスでのiOSアプリ、および人工知能(AI)アプリケーションの作成を容易にするために作成されました。Statistaによると、Swiftプログラマーは、ライドシェア、バケーションレンタル、モバイル決済会社向けのアプリに取り組んでおり、年間平均135,000ドルの収益を上げています。

Perl

Perlは30年前のプログラミング言語であり、Rakuを含む言語ファミリーに進化しました。Perlは、ラップトップからメインフレームまで、幅広いシステムで実行される強力なプログラミング言語です。プロトタイピング、テキスト操作、Web開発、およびネットワークプログラミングはすべて、プログラマーがそれを利用するタスクです。Statistaによると、Perlプログラマーは年間平均13万ドルを稼いでいます。

ルビー

Rubyは、日本人プログラマーによって作成され、1995年にリリースされたプログラミング言語です。多くのコーディング言語に基づいています。Rubyは、コーダーの生産性のために、そして他の人が使用するための楽しい言語として、プログラマーによって作成されました。過去26年間、Rubyはコーダーのために多くの会議や年次交流会を開催してきました。Statistaによると、Rubyプログラマーは、Webアプリケーションやサーバーなどの開発で、年間平均130,00ドルを稼いでいます。

さび

Rustは、コンピューター会社の従業員のサイドプロジェクトとして2010年にデビューしました。この言語はCおよびC ++に似ており、両方の言語で同じコマンドとキーワードの多くがあり、Rustに固有の他の機能もあります。GitHubによると、これは最も急速に成長しているプログラミング言語の1つです。Rustのバグ防止とメモリ効率は言語の特徴の2つであり、どちらも安全性とパフォーマンスに重点を置いています。この言語は、ハードウェアサービスとネットワークサービスの両方と互換性があります。Statistaによると、Rustプログラマーは、Webブラウザー、ファイル共有プラットフォーム、オンラインマーケットプレイスなどの分野で年間平均13万ドルを稼ぐことができます。

Scala

ScalaはScalableLanguageの略語で、2000年代初頭にドイツのコンピューター科学者によって作成されました。この言語は2004年1月20日に最初に使用されました。ScalaはJava拡張機能ではありませんが、Scalaと統合され、多くのネイティブJava開発者によって使用されています。これは、ビジネスアプリケーションの生産性、信頼性、およびスケーラビリティを向上させるために使用されます。また、競合する関連プログラミング言語に見られる典型的な欠陥を回避するために作成されました。Scalaはマルチパラダイム言語です。つまり、さまざまなプログラミングパラダイムやパターンをサポートできます。Statistaによると、ソーシャルネットワーキングプログラム、内部コンテンツ管理システム、およびバックエンドプラットフォームを使用するScalaプログラマーは、年間平均15万ドルの収益を上げています。 

リンク:https ://medium.com/@jasonwiller/top-10-highest-paid-programmers-by-language-535bf37d4e35 

#scala #rust #ruby #perl #swift #kotlin 

言語別の最高賃金プログラマートップ10
Anthony  Dach

Anthony Dach

1643249520

Selenium Remote Driver: Perl Bindings to The Selenium Webdriver Server

Selenium::Remote::Driver 

WARNING

Selenium has essentially been leapfrogged technologically by Playwright. (using the devtools protocol for all browsers) Use Chrome::DevToolsProtocol (or the Playwright interface on CPAN) instead of this unless you want to be frustrated by a tool which doesn't do half of what you want. Even then you are probably shooting yourself in the foot not using Javascript directly to automate the testing of webpages.

This module is also not ready for SeleniumHQ's 4.0 series JAR. For compatibility with that, try our next generation selenium client: Selenium::Client

Introduction

Selenium WebDriver is a test tool that allows you to write automated web application UI tests in any programming language against any HTTP website using any mainstream JavaScript-enabled browser. This module is a Perl implementation of the client for the Webdriver JSONWireProtocol that Selenium provides.

It also implements WC3 selenium.

Installation

It's probably easiest to use the cpanm or CPAN commands:

$ cpanm Selenium::Remote::Driver

If you want to install from this repository, see the installation docs for more details.

Usage

You can use this module to directly start the webdriver servers, after downloading the appropriate ones and putting the servers in your $PATH. This method does not require the JRE/JDK to be installed, nor does it require the standalone server jar, despite the name of the module. In this case, you'll want to use the appropriate class for driver construction: either Selenium::Chrome, Selenium::Firefox, Selenium::PhantomJS, or Selenium::InternetExplorer.

You can also use this module with the selenium-standalone-server.jar to let it handle browser start up for you, and also manage Remote connections where the server jar is not running on the same machine as your test script is executing. The main class for this method is Selenium::Remote::Driver.

Regardless of which method you use to construct your browser object, all of the classes use the functions listed in the S::R::Driver POD documentation, so interacting with the browser, the page, and its elements would be the same.

no standalone server

Firefox 48 & newer: install the Firefox browser, download geckodriver and put it in your $PATH. If the Firefox browser binary is not in the default place for your OS and we cannot locate it via which, you may have to specify the binary location during startup. We also will need to locate the Firefox browser; if the Firefox browser isn't in the default location, you must provide it during startup in the firefox_binary attr.

Firefox 47 & older: install the Firefox browser in the default place for your OS. If the Firefox browser binary is not in the default place for your OS, you may have to specify the firefox_binary constructor option during startup.

Chrome: install the Chrome browser, download Chromedriver and get chromedriver in your $PATH.

PhantomJS: install the PhantomJS binary and get phantomjs in your $PATH. The driver for PhantomJS, Ghostdriver, is bundled with PhantomJS.

When the browser(s) are installed and you have the appropriate binary in your path, you should be able to do the following:

my $firefox = Selenium::Firefox->new;
$firefox->get('http://www.google.com');

my $chrome = Selenium::Chrome->new;
$chrome->get('http://www.google.com');

my $ghost = Selenium::PhantomJS->new;
$ghost->get('http://www.google.com');

Note that you can also pass a binary argument to any of the above classes to manually specify what binary to start. Note that this binary refers to the driver server, not the browser executable.

my $chrome = Selenium::Chrome->new(binary => '~/Downloads/chromedriver');

See the pod for the different modules for more details.

Breaking Changes for Selenium::Firefox in v1.0+

There are breaking changes for Selenium::Firefox from v0.2701 of S:F to v1.0+. This is because in FF47 and older, Firefox didn't have a separate webdriver server executable - local startup was accomplished by starting your actual Firefox browser with a webdriver extension. However, in FF48 and newer, Mozilla have switched to using geckodriver to handle the Webdriver communication. Accordingly, v1.0+ of Selenium::Firefox assumes the geckodriver setup which only works for FF48 and higher:

# marionette_enabled defaults to 1 === assumes you're running FF48
my $fx48 = Selenium::Firefox->new;
my $fx48 = Selenium::Firefox->new( marionette_enabled => 1 );

To drive FF47 with v1.0+ of Selenium::Firefox, you must manually disable marionette:

my $fx47 = Selenium::Firefox->new( marionette_enabled => 0 );

Doing so will start up your Firefox browser with the webdriver extension. Note that in our tests, doing the old "webdriver-extension-startup" for Firefox 48 does not work. Likewise, geckodriver does not work with FF47.

with a standalone server

Download the standalone server and have it running on port 4444:

$ java -jar selenium-server-standalone-X.XX.X.jar

As before, have the browsers themselves installed on your machine, and download the appropriate binary server, passing its location to the server jar during startup.

Locally

use strict;
use warnings;
use Selenium::Remote::Driver;

my $driver = Selenium::Remote::Driver->new;
$driver->get('http://www.google.com');
print $driver->get_title . "\n"; # "Google"

my $query = $driver->find_element('q', 'name');
$query->send_keys('CPAN Selenium Remote Driver');

my $send_search = $driver->find_element('btnG', 'name');
$send_search->click;

# make the find_element blocking for a second to allow the title to change
$driver->set_implicit_wait_timeout(2000);
my $results = $driver->find_element('search', 'id');

print $driver->get_title . "\n"; # CPAN Selenium Remote Driver - Google Search
$driver->quit;

Saucelabs

If using Saucelabs, there's no need to have the standalone server running on a local port, since Saucelabs provides it.

use Selenium::Remote::Driver;

my $user = $ENV{SAUCE_USERNAME};
my $key = $ENV{SAUCE_ACCESS_KEY};

my $driver = Selenium::Remote::Driver->new(
    remote_server_addr => $user . ':' . $key . '@ondemand.saucelabs.com',
    port => 80
);

$driver->get('http://www.google.com');
print $driver->get_title();
$driver->quit();

There are additional usage examples on metacpan, and also in this project's wiki, including setting up the standalone server, running tests on Internet Explorer, Chrome, PhantomJS, and other useful example snippets.

Selenium IDE Plugin

ide-plugin.js is a Selenium IDE Plugin which allows you to export tests recorded in Selenium IDE to a perl script.

Installation in Selenium IDE

  1. Open Selenium IDE
  2. Options >> Options
  3. Formats Tab
  4. Click Add at the bottom
  5. In the name field call it 'Perl-Webdriver'
  6. Paste this entire source in the main textbox
  7. Click 'Save'
  8. Click 'Ok'
  9. Close Selenium IDE and open it again.

Note: The Code generated by this plugin currently assumes that you have firefox 48 or newer + the geckodriver plugin installed.

If you have an older version of firefox you can adjust the plugin the following way: In the options window of selenium IDE (Formats tab) there is a input box called "Header". Here you can modify the fixed header code beeing generatd. Change Selenium::Firefox->new(); according to the firefox init examples shown above in this README.

Support and Documentation

There is a mailing list available at

https://groups.google.com/forum/#!forum/selenium-remote-driver

for usage questions and ensuing discussions. If you've come across a bug, please open an issue in the Github issue tracker. The POD is available in the usual places, including metacpan, and in your shell via perldoc.

$ perldoc Selenium::Remote::Driver
$ perldoc Selenium::Remote::WebElement

Download Details:
Author: teodesian
Source Code: https://github.com/teodesian/Selenium-Remote-Driver
License: Apache

#selenium  #perl #driver 

Selenium Remote Driver: Perl Bindings to The Selenium Webdriver Server
Zak Dyer

Zak Dyer

1630821420

1 Problem, 5 Programming Languages (Julia, Ruby, Raku [Perl 6], Fortran, Nim)

A follow up video looking at improvements to 5 programming language solutions (Julia, Ruby, Raku [Perl 6], Fortran, Nim) to one problem.

Github Links / Chapters:
0:00 Intro
0:47 Problem Statement
1:20 Julia: https://github.com/codereport/LeetCode/blob/master/0255_Problem_1.jl 
4:08 Raku: https://github.com/codereport/LeetCode/blob/master/0255_Problem_1.raku 
4:46 Ruby: https://github.com/codereport/LeetCode/blob/master/0255_Problem_1.rb 
5:55 Fortran: https://github.com/codereport/LeetCode/blob/master/0255_Problem_1.f90 
8:38 Nim
9:02 Summary
9:20 Rankings
9:36 Podcasts and Outro

Original Video: https://morioh.com/p/5600ea1e07a9 

#julia #ruby #raku #perl #fortran #nim

 

 

1 Problem, 5 Programming Languages (Julia, Ruby, Raku [Perl 6], Fortran, Nim)
Mariya James

Mariya James

1629192954

Top 20 Most Popular Programming Languages For 2021 and Beyond

Top 20 Most Popular Programming Languages For 2021

Several programming languages are there; still, new ones are constantly emerging. But the major concern is which one running the whole market or which programming language is the most popular and well suited for web and mobile app development.

This list will help you choose the best language for web and mobile app development- https://bit.ly/3yK0AY2

.

.

.

#ProgrammingLanguages #BestProgrammingLanguage #Webapplicationdevelopment #mobileappdevelopmentservices #AI #programming #JavaScript #Python #PHP #JAVA #Kotlin #android #ios #swift #Ruby #Golang #HireCustomAppDevelopers #C #ListOfTopProgrammingLanguages #HTML #Rust #perl #scala #scheme #bestmobileappdevelopmentcompany

Top 20 Most Popular Programming Languages For 2021 and Beyond
Waylon  Bruen

Waylon Bruen

1616258100

Building a Microservice in Perl (Part 2): Up and Running

In part 1, we designed our API using OpenAPI/Swagger. Now it’s time to write some tests and wire it up using Mojolicious::Plugin::OpenAPI.

In part 1 we  designed our API using  OpenAPI/Swagger. Now it’s time to write some tests and wire it up using  Mojolicious::Plugin::OpenAPI. This is a much longer article; buckle up!

If you haven’t already, you’ll need to install Perl. Using Linux or macOS? You’ve already got Perl installed on your system. On Windows? I recommend you  install Strawberry Perl as it lets you develop Perl applications using the same tools that our Unix-based brethren use.

(Advanced users may want to investigate using  perlbrew, plenv, or  berrybrew for managing multiple versions of Perl and installing more recent versions than are included on your system.)

#tutorial #microservices #perl #swagger #openapi #mojolicious

Building a Microservice in Perl (Part 2): Up and Running
Waylon  Bruen

Waylon Bruen

1616250600

Building a Microservice in Perl (Part 1): Designing the API

A brief description of microservices, then jumping into defining one with OpenAPI.

A microservice can be thought of as the distributed computing implementation of the  Unix philosophy of "Do one thing and do it well." Usually modeled around specific business domains, a well-designed set of microservices each have their own lifecycle and communicate with each other and with consuming applications via technology-agnostic protocols like  HTTP.

Because of this, a microservice may be implemented using whatever is the best programming language, database, or other environment to fit the job. Perl can be an excellent choice for development because of its strengths as a battle-tested, expressive multi-paradigm language with a  broad open-source library of modules.

In this series of articles, we’ll be using Perl, the  Mojolicious web framework, and the  OpenAPI (formerly  Swagger) specification for describing web services to develop an example microservice that adheres to the  REST architectural style for communication over HTTP. Some knowledge of Perl and web development is assumed, and we’ll be linking to supporting documentation and literature as we go.

In a full microservices implementation, we would start by modeling the business domains being serviced and the explicit boundaries between them. For the purposes of this series, we are limiting ourselves to developing only one microservice with a trivial purpose-a toy, if you will. This service will act as a simple dictionary allowing consumers to both query for the definitions of words as well as add new entries.

We could envision a variety of consumers: a web front-end, a mobile app, maybe even SMS text messaging. The key is that the design of our application programming interface (API) should not dictate the implementation or lifecycle of any of these consumers, and it should be easy for their developers to understand its specification.

To that end, we turn to  OpenAPI, which gives both our microservice and its consumers an unambiguous machine-readable description of the interface without the need for additional code or documentation. And as we’ll see later, we’ll use that very same specification to drive our web framework to produce HTTP routes that accept valid input and produce valid output.

#tutorial #perl #swagger #openapi #microservice design #mojolicious

Building a Microservice in Perl (Part 1): Designing the API
Aurelie  Block

Aurelie Block

1597881720

Шифрование и расшифровка паролей UltraVnc (C#)

Возникла необходимость деплоить и настраивать UltraVnc сервер на удаленных машинах. Для этого необходимо было написать шифратор паролей для UltraVnc.

#decrypt #des #encrypt #password #perl #ultravnc #c#

Шифрование и расшифровка паролей UltraVnc (C#)
Teresa  Jerde

Teresa Jerde

1597800329

C# аналог Perl Crypt::DES

Довелось мне на днях написать метод генерации зашифрованного пароля для UlrtaVnc. Писать необходимо было на C#. Погуглив, нашел реализации алгоритма шифрования на Perl и Python.

#crypt #des #perl #my projects #c#

C# аналог Perl Crypt::DES

How to Uninstall Software in Ubuntu 18.04

Introduction
In this tutorial, we will demonstrate how to quickly and easily uninstall software from Ubuntu. Uninstalling software can be done using several techniques. In this article, we will show you how to uninstall software using these various methods.

On Ubuntu, the main applications or methods used to install software packages are seen below.

#tutorials #.deb #apt #apt cache #apt-get #autoremove #chkinstall #cli #dpkg #git #gnu stow #make #new user tutorial #perl #ppa #purge #snap #software #source #source install #synaptic #tutorial #ubuntu #uninstall

How to Uninstall Software in Ubuntu 18.04

Rodrigo Senra - Jupyter Notebooks

Nosso convidado de hoje é diretor técnico na Work & Co, PhD em Ciências da Computação, já contribuiu com inúmeros projetos open source em Python, ajudou a fundar a Associação Python Brasil e já foi premiado com o Prêmio Dorneles Tremea por contribuições para a comunidade Python Brasil.

#alexandre oliva #anaconda #apache zeppelin #associação python brasil #azure notebooks #beakerx #binder #c++ #closure #colaboratory #donald knuth #fernando pérez #fortran #graphql #guido van rossum #ipython #java #javascript #json #jupyter kenels #jupyter notebooks #jupyterhub #jupyterlab #latex #lisp #literate programming #lua #matlab #perl #cinerdia #prêmio dorneles tremea #python #r #rodrigo senra #scala #spark notebook #tcl #typescript #zope

Rodrigo Senra - Jupyter Notebooks