Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Google Form を利用する上での注意点 GoogleForm って、くそ便利ですよね。 GoogleWorkspace を利用している企業や、各個人でも広く便利に使われていると思います。 ですが、ちょっとした設定の組み合わせで、意図せずform回答結果を全世界に公開してしまう状態になってしまうので、注意が必要です。 具体的には、下図のように 自組織と信頼できる組織のユーザに限定する を OFF にする 概要グラフとテキストの回答を表示 を ON にする の組み合わせで、他の人の回答結果が参照できる状態になってしまいます。 もちろん、URLを知られない限り参照はされないのですが、回答者は回答終了後に参照できてしまうので、それなりの人の目に触れてしまいます。 個人情報を収集するような form だとかなりまずい状態になりますよね。 GAS で公開設定になっている form を検知しよう
jqをインストールできなかったり、jqで複雑な加工をさせたいが構文が難しくて覚えられなかったりと、 なんらかの事情でjqを使わずjavascript(Node.js)でJSONを処理したいことが稀にあるかもしれません。 Node.jsは標準入力に弱い?そんな事はありません。ワンライナーで処理できます! JSONファイルが小さいとき 下記のようなJSONを想定します。1 { "menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } } } $ ca
import sys import json import requests from bs4 import BeautifulSoup import codecs def scraping(url, output_name): # get a HTML response response = requests.get(url) html = response.text.encode(response.encoding) # prevent encoding errors # parse the response soup = BeautifulSoup(html, "lxml") # extract ## title header = soup.find("head") title = header.find("title").text ## description descriptio
Python3でSeleniumのChromeドライバを利用したBeautifulSoupの作成例。 JavaScriptによる動的コンテンツのパースも可能。 from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options import Options def create_soup(url, timeout=30): """ urlのコンテンツからBeautifulSoupを作成する。 @return {BeautifulSoup} """ options = Options() options.add_argument('--headless') options.add_argument('--disable-gpu') driver = webdri
いろいろなsoupの取得方法メモ。 google画像検索とか、javascriptが有効なサイトだとselenium使わないといけないっぽい。 #-*- coding:utf-8 -*- from bs4 import BeautifulSoup def get_soup_uulib2(url): import urllib2 opener = urllib2.build_opener() opener.addheaders = [('User-agent', 'Mozilla/5.0')] page = opener.open(url) soup = BeautifulSoup(page,"lxml") return soup def get_soup_urequests(url): import requests s = requests.Session() r = s.get(url
「Webには時代遅れで脆弱性のあるJavaScirptライブラリで溢れていることが研究により明らかに」という記事のとおり、世の中には脆弱性のあるJavaScriptライブラリを使った多くのウェブサイトが存在します。 IPAが公開している「安全なウェブサイトの作り方」には脆弱性が修正されたバージョンのライブラリを使用する。と記述があったり、「OWASP TOP10 2017 (日本語版)」にも既知の脆弱性のあるコンポーネントの使用を避けるように、と脆弱性のあるライブラリを使用しないよう注意喚起されています。 脆弱性のあるライブラリを使用しているか調べることができるRetire.jsを紹介します。 すべての脆弱性を防げる保証は無いので、あくまで自己責任でお使いください。 Retire.jsとは Retire.jsは上の画像のようにCLIなどで実行することができる脆弱性のあるJSライブラリを検出
#はじめに 業務でJavascript/TypeScriptを用いて開発をしていて、 毎日のようにデバッグするのですが そんな中でChrome Dev Tools(DevTools)を使用したお気に入りのデバッグ方法があり、まとめてみました。 以前React Dev ToolsでのReactのデバッグ方法も紹介していますので、興味があれば読んでください。 React Developer Toolsのすすめ 既にご存知の方には当たり前の方法で 記事にするほどのことでもない!と思われるかと思いますが、 知らなかった方が効率よくデバッグできるようになれば幸いです。 #対象読者 Javascript/TypeScriptで開発しているが、デバッグ方法がいまいち分からない方 console.logを多用してデバッグをしている方 デバッグを効率化したい方 #JavaScript/TypeScripのデ
Overview これ の python3 と javascript 版。 javascript でブラウザで動かせるやつが欲しかったのだけど、意外と手こずったので、一度 python で書いてから js で書き直した。 検証はこの辺で。 python3 版 netaddr っていうお手本があるので、これを使うと楽。 ちなみに netaddr.iprange_to_cidrs っていうそのまんまな実装がすでにあるけど、今回は手書きしたかったので使いません。 import netaddr import math def iprange2cidr(start, end): iMask = lambda s: (2**32 - 2**(32-s)) while end >= start: max_size = 32 while max_size > 0: assert 0 < max_size
*アプリケーション自体は公開される 各サービスの特徴 CodeSandbox メジャーなフレームワークのテンプレートが用意されており、すばやく開発を始められる。他の人が CodeSandbox で作成したプロジェクトを Fork できるのも便利。Visual Studio Code と同じ Monaco というエディターをベースにしているため、オートコンプリート機能が充実しており、同様のショートカットを使えるので普段 VSCode を使用している人には使いやすいだろう。ただし拡張機能は使えない。 本質的に異なる2種類の開発環境が用意されている。 Client Environment ビルド処理を含め完全にブラウザ内で実行される いったんエディターを開けばインターネットに繋がらなくなっても開発を続けられる(ただし NPM パッケージの追加には当然インターネット接続が必要) Webpack の
はじめに データ構造の多くは、破壊的な操作を提供しています。例えば配列はある要素を別の値に更新する操作を提供しています。配列の更新操作の処理時間は配列の長さや値に依存しないという点で優れています。 一方で、データ構造に対して非破壊的な操作を実行したい場面もあるかと思います。例えば配列を累積値とするreduce/fold処理(畳み込み演算)の各計算においては非破壊的に新しい配列を生成すべきです(破壊後の配列を計算結果とすることも可能ですが健全な使い方とは言い難いでしょう)。あるいはReactのステートフックのstate更新のように更新後のオブジェクトを新たにセットする必要がある場合、下記のように非破壊的に新しくオブジェクトを生成しそれをセットさせることになります。
Getting Started: Building a Chrome Extension - Google Chrome を見ながら作った. 流れ manifest と ポップアップ時の html を作ってアイコン作って Chrome ストアに上げる. どういうものを作るか あとで読む Extension アイコンを押すと, 現在見ているページが trello のあとで読むリストに追加される. を作りたかったが, 想定した時間ではできなかったので, とりあえずリンクを Markdown 形式とかで表示する Extension を作った. ベースを作る Extension 管理用ディレクトリを作る.
PySpa統合思念体です。あと、 @yosuke_furukawa にも協力いただきました。 基本的に、あまりエラーの種別を細かく判定してあげることはJavaScriptでは今までやってこなかったのですが、ちょっとしたメタデータを乗っけてあげるとか(例えばリトライ回数)、何か凝ったことをしたくなったらこういう方針でやればいいのでは、という試行錯誤録です。 エラーと例外の区別が必要か この手の話になると、エラーと例外の違いとか、こっちはハンドリングするもの、こっちはOSにそのまま流すものとかいろんな議論が出てきます。このエントリーではエラーも例外も差をつけずに、全部例外とひっくるめて説明します。 例外というのはすべて、何かしらのリカバリーを考える必要があります。 ちょっとしたネットワークのエラーなので、3回ぐらいはリトライしてみる 原因: ネットワークエラー リカバリー: リトライ サーバー
概要 JavaScriptでDOMを作ってるサイトをPythonを使ってスクレイピングしたので、手順をメモ。 大雑把には、ScrapyとSeleniumを組み合わせてやった。 Scrapy Scrapyは、クローラーを実装するためのフレームワーク。 クローラーをSpiderのサブクラス、スクレイピングした情報をItemのサブクラス、スクレイピングした情報に対する処理をPipelineのサブクラス、という風にフレームワークが決めたインターフェースを満たすクラスとしてクローラーを実装する。 scrapyというコマンドが提供されてて、このコマンドを使って、作ったクローラーの一覧を見たり、クローラーを起動したりできる。 Selenium Seleniumは、ブラウザをプログラムから制御するためのツール(でいいのかな?)。Pythonも含めたいろんな言語で使える。 よくWebサイト/アプリの自動テス
ヘッドレスブラウザsplashが便利だったので知見を共有します モチベーション jsで構成されたサイトをスクレイピングしたいなと思い立った時、seleniumがデファクトの選択肢として挙げられると思います。 しかしseleniumの含めヘッドレスブラウザはブラウジングが入ってくるので処理がそれなりに遅くなってしまいます。大量のページをスクレイピングする用途では不向きです。 そこで、サイトをしっかりブラウジングしながらもパフォーマンスを両立するヘッドレスブラウザという要件でseleniumの代わりをさがしていたところ、splashに白羽の矢が立ちました。 splashとは scrapyの開発元であるscrapinghub社が開発しているスクレイピングに特化したヘッドレスブラウザです。 splashは他のヘッドレスブラウザとは毛色が違い、Dockerで配布されるHTTP APIです。 ドキュメ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く