Fazer a mesma tarefas em variadas linguagens de programação faz melhorar nosso conceito de lógica. Ou seja, o mesmo resultado, mas com sintaxes diferentes.
Nesse artigo vamos ver como abrir uma URL no navegador padrão em 4 linguagens de programação diferentes:
Vamos lá!
Em Python basta importarmos a biblioteca webbrowser
e usarmos a função open()
indicando a URL, exemplo:
vim openurl.py
import webbrowser
url="https://terminalroot.com.br/"
webbrowser.open(url)
Para rodar:
python openurl.py
Moleza, né?!
Em Golang poderíamos usar o pacote: open-golang e usar os comandos: go mod init github.com/skratchdot/open-golang/open
e go mod tidy
e compilar.
Mas você pode criar uma função para isso, que verificará o comando em cada sistema operacional diferente(open
, xdg-open
e start
), logo o código ficaria assim:
vim openurl.go
package main
import (
"fmt"
"os/exec"
"runtime"
"log"
)
func openbrowser(url string) {
var err error
switch runtime.GOOS {
case "linux":
err = exec.Command("xdg-open", url).Start()
case "windows":
err = exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start()
case "darwin":
err = exec.Command("open", url).Start()
default:
err = fmt.Errorf("unsupported platform")
}
if err != nil {
log.Fatal(err)
}
}
func main (){
openbrowser("https://terminalroot.com.br/")
}
Para rodar:
go build openurl.go && ./openurl
Quase fácil, digamos assim! 😃
Em Rust é quase similar ao caso de Go, ou seja, há um crate que você pode baixar e usar ou você pode criar uma função e de acordo com o sistema operacional e rodar o processo com o devido comando, vamos fazer a segunda opção:
Use o std::process::Command
!
Para simplificar vamos mostrar como fazer isso em sistemas tipo UNIX:
vim openurl.rs
use std::process::Command;
fn main() {
let url = "https://terminalroot.com.br/";
let mut openurl = Command::new("xdg-open");
openurl.arg(url);
openurl.status().expect("process failed to execute");
}
Para rodar:
rustc openurl.rs && ./openurl
Mais ou menos fácil também! 😎
Em Ruby não foge da lógica para Go e Rust. Ou seja, utilizaremos o RbConfig::CONFIG['host_os']
para detectar o sistema operacional e criar um case para o comando adequado. Assim:
vim openurl.rb
cmd = case RbConfig::CONFIG['host_os']
when /mswin|mingw|cygwin/ then "start "
when /darwin/ then "open "
when /linux|bsd/ then "xdg-open "
else raise "No OS detected"
end
b = system cmd + "https://terminalroot.com.br/"
Para rodar:
ruby openurl.rb
Se não fose o case
seria mais moleza, exemplo em sistema tipo UNIX bastava rodar via linha de comando:
ruby -e 'system "xdg-open " + "https://terminalroot.com.br/"'
Quase um BASH! Mais moleza que isso só rodando diretamente no prompt! 😛
Algumas pessoas poderão perguntar:
Haha, é só usar o system()
! 🍺
Fui!
programacao python go ruby rust