シェルスクリプトマガジン

test

Linux定番エディタ入門

投稿日:2024.03.25 | カテゴリー: コード

筆者:大津 真

文章の作成やプログラミングに欠かせないのがテキストエディタ(以下、エディタ)です。この連載では、Linuxで利用できる定番エディタの特徴と使い方を解説していきます。最終回となる今回も、LinuxだけでなくWindowsやmacOSでも利用可能なGUIエディタの定番「Visual Studio Code(VSCode)」を引き続き紹介します。

シェルスクリプトマガジン Vol.89は以下のリンク先でご購入できます。

図1 「test1.md」ファイルに記述するテキストデータ

# VSCode 入門
VSCode はシンプルで扱いやすいエディタです。

## いろいろなエディタ
1. VSCode
2. Vim
3. nano

## VSCode の特徴
- プラグインによる拡張
- ワークスペースによる管理
- コマンドパレットによるコマンド実行

Pythonあれこれ(Vol.89掲載)

投稿日:2024.03.25 | カテゴリー: コード

著者:飯尾 淳

本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温かく見守ってください。皆さんと共に勉強していきましょう。第19回では、データの可視化などにも活用できるWebアプリケーションフレームワーク「Streamlit」の基本的な使い方を紹介します。

シェルスクリプトマガジン Vol.89は以下のリンク先でご購入できます。

図7 「magic.py」ファイルに記述するコード

import streamlit as st

# 素のテキストはマークダウンで表示される(docstring以外)
'''
# Magicという仕組み

説明を _markdown_ で書けます。
'''

'### 文字列や変数の取り扱い'
a = st.number_input("整数aの値を入れてください:+1:", value=0)
b = st.number_input("整数bの値を入れてください:+1:", value=0)
x = a + b
'a + b = ', x  # 文字列と変数の値を並べて直接描画する

'### 表の取り扱い'
import pandas as pd
df = pd.DataFrame({'名前': ['あや','ゆみ','みなこ','とめ'],
                   '年齢': [24,22,32,95]})
df  # データフレームを直接描画する

'### チャートの取り扱い'
import matplotlib.pyplot as plt
import numpy as np

arr = np.random.normal(1, 1, size=100)
fig, ax = plt.subplots()
ax.hist(arr, bins=20)

fig  # チャートも直接描画できる

図9 キャッシュを設定するコードの例

'### チャートの取り扱い'
import matplotlib.pyplot as plt
import numpy as np

@st.cache_data
def make_chart():
    arr = np.random.normal(1, 1, size=100)
    fig, ax = plt.subplots()
    ax.hist(arr, bins=20)
    return fig

fig = make_chart()
fig  # チャートも直接描画できる

図10 山手線の駅の位置を地図上にプロットするWebアプリのコード

import streamlit as st
import pandas as pd
import json

with open('yamate.geojson','r') as f:
    data = json.load(f)

coords = [f['geometry']['coordinates'] \
    for f in data ['features'] if f['geometry']['type'] == 'Point']

map_data = pd.DataFrame(coords, columns=['lon', 'lat'])

st.map(map_data)

図12 ウィジェットをサイドバーに配置するコードの例

import streamlit as st

selected = st.sidebar.selectbox(
    'なに食べる?',
    ('ramen', 'curry', 'katsudon'),
)

st.image(selected + '.jpg')

Raspberry Piを100%活用しよう(Vol.89掲載)

投稿日:2024.03.25 | カテゴリー: コード

著者:米田 聡

本連載では、人気のマイコンボード「Raspberry Pi Pico W/WH」を活用していきます。同ボードは、無線LANやBluetoothの通信機能を搭載し、入手しやすく価格も手頃なので、IoT機器を自作するのに最適なハードウエアです。第5回は、DHT-11で測った湿温度をスマートフォンに通知します。

シェルスクリプトマガジン Vol.89は以下のリンク先でご購入できます。

図4 LINE Notifyを使って通知を送る「notify()」関数を定義したPythonプログラム

import usocket as socket
from urequests import post
from micropython import const

TOKEN = const("your_access_token")

def notify(msg):
    url = 'https://notify-api.line.me/api/notify'
    rheaders = {
            'Content-type':'application/x-www-form-urlencoded',
            'Authorization':'Bearer ' + TOKEN
    }

    message = "message=" + msg
    req = post(url,headers=rheaders,data=message)
    return req.status_code

図6 1時間おきに湿温度をスマートフォンに通知するサンプルプログラム(sample.py)

from machine import Pin
from machine import Timer
from micropython import const
from micropython import schedule
import _thread
import dht
import line
import time

DHT_PIN = const(15)
TICK = const(60)

class Climate():
    def __init__(self, dht_gpio=DHT_PIN, tick=TICK, callback=None, expire=TICK):
        self.dht = dht.DHT11(Pin(dht_gpio))
        self.tick = tick
        self.lock = _thread.allocate_lock()
        self.timer = Timer(period=tick*1000, mode=Timer.PERIODIC, callback=self._timer_handler)
        self._humidity = 0
        self._temperature = 0
        self._measurement_dt = 0
        self.measure()
        self._callback_func = callback
        self._expire = expire
        self._counter = 0
    
    def set_callback(self, callback, expire):
        self._callback_func = callback
        self._expire = expire
    
    def measure(self, arg=0):
        self.dht.measure()
        self.lock.acquire()
        self._humidity = self.dht.humidity()
        self._temperature = self.dht.temperature()
        self._measurement_dt = time.time()
        self.lock.release()
    
    def _timer_handler(self,t):
        schedule(self.measure, 0)
        self._counter -= 1
        if self._counter <= 0:
            self._counter = self._expire
            if self._callback_func is not None:
                schedule(self._callback_func, self)
    
    @property
    def temp(self):
        self.lock.acquire()
        rval = self._temperature
        self.lock.release()
        return rval
    
    @property
    def hum(self):
        self.lock.acquire()
        rval = self._humidity
        self.lock.release()
        return rval
    
    @property
    def measurement_date_time(self):
        self.lock.acquire()
        rval = self._measurement_dt
        self.lock.release()
        return rval
        

def mycalback(c):
    tm = time.localtime(c.measurement_date_time)
    line.notify("temp=%d,hum=%d@%4d/%02d/%02d_%02d:%02d:%02d" % (c.temp, c.hum, tm[0],tm[1],tm[2],tm[3],tm[4],tm[5]))
    
if __name__ == '__main__':
    cl = Climate(callback = mycalback)
    
    while(True):
        machine.idle()

Markdownを活用する(Vol.89掲載)

投稿日:2024.03.25 | カテゴリー: コード

著者:藤原 由来

本連載では文書の装飾や構造付けを手軽に行える記法である「Markdown」を用いて、さまざまな文書や成果物を作成する方法を紹介します。第1回はMarkdownベースの高機能なノートアプリ「Obsidian」の初歩的な使い方と、Markdownの基本的な記法を説明します。

シェルスクリプトマガジン Vol.89は以下のリンク先でご購入できます。

図2 Markdownの記述例

# カレーの作り方

おいしいカレーを作りましょう。

## 材料

- カレールー
- 牛肉
- 野菜
- サラダ油
- 水

シェルスクリプトマガジンvol.89 Web掲載記事まとめ

投稿日:2024.03.25 | カテゴリー: コード

004 レポート 進研ゼミに生成AI活用新サービス
005 レポート HHKB Studioのキートップカスタム
006 製品レビュー スマートリング「SOXAI RING 1」
007 NEWS FLASH
008 特集1 Amazon EC2入門/飯村望、清水祥伽
023 Hello Nogyo!
024 特集2 コンテンツクラウドのBox/有賀友三、結城亮史、葵健晴、辰己学
040 Markdownを活用する/藤原由来 コード掲載
050 Raspberry Pi Pico W/WHで始める電子工作/米田聡 コード掲載
054 中小企業手作りIT化奮戦記/菅雄一
058 香川大学SLPからお届け!/宇佐美志久眞
062 Pythonあれこれ/飯尾淳 コード掲載
068 Linux定番エディタ入門/大津真 コード掲載
076 Techパズル/gori.sh
077 コラム「顧客と一心同体の精神を育成」/シェル魔人

Vol.89

投稿日:2024.03.25 | カテゴリー: バックナンバー

 「Amazon Elastic Compute Cloud」(Amazon EC2)は、米Amazon Web Services(AWS)社のクラウドコンピューティングサービスの中で最も人気があります。Amazon EC2は、仮想化技術を用いて、CPUやメモリー、ストレージなどのサーバーハードウエア資源を提供する「IaaS」(Infrastructure as a Service)というサービスに分類されます。
 特集1では、このAmazon EC2のサービス内容について初めての人にも分かりやすく解説します。また、無料利用枠を用いてLinuxサーバーを稼働する手順も紹介します。
 特集2では、オンラインストレージ(クラウドストレージ)サービスの「Box」について解説します。最近では、データの重要性が高まってきています。そのデータは、データベースのような構造化されたものだけではありません。文書ファイルなども貴重なデータです。そのため、オンラインストレージは、単なるファイルの保管場所といった役割にとどまりません。ファイルというコンテンツを、いかに安全に共有・活用できるのかが大きな役割になってきています。
 このほか、新連載として「Markdownを活用する」が始まります。Markdownは、文書の装飾や構造付けを手軽に行えるテキスト記法です。このMarkdownを覚えることで、レポートやスライド、書籍などの多種多様な文書を作成できます。
 今回も読み応え十分のシェルスクリプトマガジン Vol.89。お見逃しなく!

※記事掲載のコードはこちら。記事の補足情報はこちら

※読者アンケートはこちら

Vol.89 補足情報

投稿日:2024.03.25 | カテゴリー: コード

訂正・補足情報はありません。
情報は随時更新致します。

  • shell-mag ブログの 2024年3月 のアーカイブを表示しています。

  • -->