カテゴリー
D-Studio プログラム

開発紹介

ソフトウェア開発でお手伝いさせていただいた案件が論文に!

http://www.spring8.or.jp/ja/news_publications/press_release/2025/250430/

こちらの輝度計測ソフトの開発をD-Studioの方でお手伝いさせていただきました!SDDの強度取得ソフトをもとに、軸移動など組み合わせて結果を絵として表示するプログラムです。

途中で止まるバグもありましたが何とか修正入れつつ対応。最終的に良い結果が得られたようで何よりです!

今回はLabVIEW開発がメインになります。

最近はPythonメインで各種研究用スキャンプログラムの作成をメインに行っております。

カテゴリー
D-Studio プログラム

スキャンプログラム

今回研究施設向けのスキャンプログラムの作成を行いました。

こちら新しい技術の導入があり、その技術利用しながら作業の自動化という事で、
各種機器を動かしながら光の強度のスキャンを行うプログラムを作成させていただきました。
PythonとWxPython利用した簡単なものです。
いくつか問題は残ってますが、解析作業は順調かつ無事終了。
出番が少ないワンオフ的なソフトになりますが、設定ファイルさえ変えれば流用が効くので今後別件で利用できそうです!

Pythonでの簡易GUI作成はWxPythonで簡単にできるので良いですね!
複雑になるとGUI部分が難しくなるのでそこは何を使うかが悩みどころですね。

#Python
#スキャンプログラム
#WxPython
#matplotlib
#研究用アプリケーション
カテゴリー
D-Studio プログラム

note

note始めました!D-Studioにアップしていきます!

まずはLabVIEW×Pythonという超ニッチなプログラミングについての内容になります!

後で自分で確認できるようにという事でもありますw

興味ある方はぜひ!

カテゴリー
D-Studio プログラム

TIFヘッダ編集

久しぶりの投稿はPythonプログラム!
D-Studioでは現在Pythonをメインに仕事してます!
研究施設などでよく使われる画像フォーマットのTIF。
こいつにはヘッダーがついており画像情報が詰め込まれてます。
それをPythonで編集します!

下記はサンプルクラス。
今回ヘッダ情報の取得自体は時間かからず直ぐに対応できたのだが、
書き換えの部分でかなり難航!
改めてWEB検索スキルの大事さがわかった。
画像保存の時に「tiffinfo=****」のオプションが必要!!

TIF画像のヘッダにある説明文の修正など実施したいときは参考に!
from PIL import Image, TiffImagePlugin, TiffTags
from PIL.TiffImagePlugin import _limit_rational, IFDRational

class TIF_edit:

    def __init__(self) -> None:
        pass

    def get_tag(self, imgpath):
        im = Image.open(imgpath)
        im_tag_v2 = im.tag_v2
        for k in im_tag_v2.keys():
            if TiffTags.TAGS_V2.get(k):
                print(k,TiffTags.TAGS_V2[k][1],im_tag_v2[k])
            elif TiffTags.TAGS.get(k):
                print(k,TiffTags.TAGS[k],im_tag_v2[k])

    def get_Description(self, imgpath):
        im = Image.open(imgpath)
        desc = im.tag_v2.get(270)
        print("■desc■"+str(desc))
        return desc

    def write_ImageDescription(self, imgpath, outpath, comment, upd_flag=False):
        im = Image.open(imgpath)
        tiff_info = im.tag_v2
        # 追記処理
        if upd_flag == False:
            desc = tiff_info.get(270)
            desc = str(desc)+comment
            tiff_info[270] = desc
        # 書き換え
        else:
            desc = comment
            tiff_info[270] = desc
        im.save(outpath, tiffinfo=tiff_info)
カテゴリー
D-Studio プログラム

仕事紹介

今進行中のお仕事紹介!

パルスモーターでステージを動かしながら、荷重値を取得することを制御するプログラム開発中。

モーター制御、荷重値取得機器への接続はUSBでcom接続。そことのコマンド送受信をPythonで作成。

ユーザーインターフェースの部分はLabVIEWで作成。

コア部分はプログラマーが管理しやすいPythonでまとめておき、表面部分はユーザーが管理しやすいLabVIEWを利用すると言う仕様になっております。

こういった機器との連携プログラムもここ数年得意分野としてやっております。

LabVIEWでPython

  • 開発紹介

  • スキャンプログラム

  • note

カテゴリー
D-Studio プログラム

Laravel覚書

LaravelでphpのDB統合環境を開発する時にLaravelを利用すると意外と簡単にできるのですが、覚えることが多いのでその一つの構成についてメモっておきます。

[Rootフォルダ]┬[app]ー[http]ー[Controller] ▶︎DBデータを取得したりする
                       ┝[public]  ▶︎index.phpから起動 画像などもここへ
                       ┝[resources]ー[views]  ▶︎**.blade.phpという画面表示部
                       ┗[routes]  ▶︎web.phpでURL指定時の飛び先を編集

上記のような構成

bladeからControllerへ飛んでデータベース処理してその結果をまたbladeで反映しながら表示って感じですかね。

画像などのデータはpublic以下にimagesみたいなフォルダ作成して纏めて置いておき、DBにそのファイル名登録しておけば、それらを利用して画像表示なども出来ます。

カテゴリー
D-Studio プログラム

LaravelでWEB開発

オーダーメードのWEBサイトを作る方法を検討!

DB連携とアンケート形式で画面を重ねて行けばどうにかなる?=PHP+HTMLとなるわけだが、調べてみるとLaravelというWEB開発環境があるのでそれを一からやってみた!

作ったページはこちら⬇︎日々変更してるのでどうなってるかわかりませんが。

https://lr.d-studio21.com/public/move

Laravelの環境を構築してMacのローカル上で動いたものをサーバーへFTPでコピーした時に問題が!画像が表示されない!!

シンボリックリンクを貼りそこへ画像を置く必要があるということなのだがlolipopサーバーではそれが出来ないっぽい。実際シンボリックリンクも作れなかった。

シンボリックリンクについてはココとか参照。

そこでの対応をどうしたかをメモっておく。

Laravelフォルダ配下のpublicフォルダ以下に画像を置き、そこへのアクセスは下記

<img class="obj" src="{{ asset('image/logo_center.png') }}" width="480"></img>

今回はLaravel8を利用してます。

サーバーはLolipopのライトプラン。

  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…

  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…

  • note

    note始めました!D-Studioにアップしていきます! まずはLabVIEW×Pythonという超ニッチな…

カテゴリー
D-Studio プログラム

ヤフオク特定ページのスクレイピング

Yahoo!オークションの特定の商品の監視を行いたい時に使えるのがこれ。まぁ普通に通知機能とかついてるから使い道はあるのかどうかわかりませんが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooAuctionのサイト監視で情報取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # 監視したいオークションサイト
    load_url = "https://page.auctions.yahoo.co.jp/jp/auction/v**********"

    load_url = load_url
    web_data = None

    try:
        # HTML取得
        html = requests.get(load_url)
        web_data = BeautifulSoup(html.content, "html.parser")
        #print(web_data)
    except:
        print("[ERROR] Check input URL.")
        exit()

    item_list = []
    setlist = []
    ave_value = 0

    title = web_data.find_all(class_="ProductTitle__text")
    if len(title) == 0:
        print("[ERROR] Check input URL.")
        exit()

    print(title[0].text)

    now_value = ""
    sokketsu = ""

    for i in web_data.find_all(class_="Price__borderBox"):
        kakaku = i.find(class_="Price__title")
        if kakaku.text.replace(" ","") == "現在価格":
            now_value = i.find(class_="Price__value").text.replace(" ","").replace("\n","")
        elif kakaku.text.replace(" ","") == "即決価格":
            sokketsu = i.find(class_="Price__value").text.replace(" ","").replace("\n","")

    print("現在価格:",now_value, "即決価格:", sokketsu)


    cnt = 0
    for i in web_data.find_all(class_="ProductDetail__item"):
        print(i.text.replace("\n",""))

即決価格と現在価格の部分が少しややこしいですが、別の部分にあるのでこんな取り方になってます。

最高入札者情報はログインしないと見れないらしいです。

変化あればログに保存してそれをグラフで表示したり出来ると面白そうですね〜

  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…

  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…

  • note

    note始めました!D-Studioにアップしていきます! まずはLabVIEW×Pythonという超ニッチな…

カテゴリー
D-Studio プログラム

ヤフオクのスクレイピング

Pythonは便利ですな!

Yahoo!オークションのスクレイピング。検索結果のタイトルと価格情報を表示。50件表示のみですが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooAuctionの買い物一覧は取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    load_url = "https://auctions.yahoo.co.jp/search/search?p="
    item = "タフト 6BA-LA900S"

    load_url = load_url + item

    # HTML取得
    html = requests.get(load_url)
    web_data = BeautifulSoup(html.content, "html.parser")
    #print(web_data)

    item_list = []
    setlist = []
    ave_value = 0

    cnt = 0
    for i in web_data.find_all(class_="Product"):
        label = i.find(class_="Product__title")
        value = i.find(class_="Product__price")
        #print(i)
        setlist = []
        setlist.append(str(cnt))
        setlist.append(str(label.text))
        setlist.append(str(value.text))

        print(str(cnt) + ":" + str(label.text) + str(value.text))
        item_list.append(setlist)
        cnt = cnt + 1

ヤフオクに関しては結構検索したら色々出てくると思います。

今回はYahoo!ショッピングと同じ様なやり方です。

こちらでは詳しくやってます!

ヤフオクのスクレイピング

,
  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…

  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…

  • note

    note始めました!D-Studioにアップしていきます! まずはLabVIEW×Pythonという超ニッチな…

カテゴリー
D-Studio プログラム

Yahooショッピングスクレイピング

Yahooショッピングのスクレイピングをやってました!1ページ目30件のみしか取れませんが、結構ちゃんと内容取れますね!Class名は調べないといけませんが。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 指定のURLをブラウザで開く
# YahooShoppingの買い物一覧は取得できるのか?

import csv
import requests
from bs4 import BeautifulSoup

#-------------------------------------------------
## main ###
#-------------------------------------------------
if __name__=='__main__':

    # 30件取得
    # 並び替えはX=9(評価順)
    load_url = "https://shopping.yahoo.co.jp/"
    search_op = "search?first=1&ss_first=1&ts=1636337247&mcr=8e2a556b12cfc76cfbdc9b34f3a2d87f&sretry=0&X=9&area=28&astk=&aq=&oq=&p="
    item = "本革 長財布"

    load_url = load_url + search_op + item

    # HTML取得
    html = requests.get(load_url)
    web_data = BeautifulSoup(html.content, "html.parser")
    #print(web_data)

    item_list = []
    setlist = []
    ave_value = 0

    cnt = 0
    for i in web_data.find_all(class_="LoopList__item"):
        label = i.find(class_="_2EW-04-9Eayr")
        value = i.find(class_="_3-CgJZLU91dR")
        setlist = []
        setlist.append(str(cnt))
        setlist.append(str(label.text))
        setlist.append(str(value.text))

        print(str(cnt) + ":" + str(label.text) + "  ■価格 ¥" + str(value.text))
        ave_value = ave_value + int(value.text.replace(",", ""))
        item_list.append(setlist)
        cnt = cnt + 1

    ave = ave_value/(cnt+1)
    print("平均価格:" + str(ave))

    # 文字コードをShift_JISに指定
    with open("item_list.csv", "w", encoding="Shift_jis") as f:
        # writerオブジェクトの作成 改行記号で行を区切る
        writer = csv.writer(f, lineterminator="\n")
        # csvファイルに書き込み
        writer.writerows(item_list)



検索文字に対して30件のタイトルと価格が一覧でCSVに吐き出されます。

for文内の[class=]部分を変えることで様々な情報が取得できます。

calssの内容などは「print(web_data)」で出した結果を解析する必要ありです。

参考サイト:https://yonesuke0716.hatenablog.com/entry/2020/02/11/173408

  • 開発紹介

    ソフトウェア開発でお手伝いさせていただいた案件が論文に! http://www.spring8.or.jp/j…


  • スキャンプログラム

    今回研究施設向けのスキャンプログラムの作成を行いました。 こちら新しい技術の導入があり、その技術利用しながら作…


  • TIFヘッダ編集

    久しぶりの投稿はPythonプログラム! D-Studioでは現在Pythonをメインに仕事してます! 研究施…


  • 最近のお仕事

    WEBシステム開発サポート(大手企業向け) ロゴデザイン(結婚相談所) HP更新・作成(企業子会社・研究チーム…


  • 仕事紹介

    今進行中のお仕事紹介! パルスモーターでステージを動かしながら、荷重値を取得することを制御するプログラム開発中…


  • ヤフオク特定ページのスクレイピング

    Yahoo!オークションの特定の商品の監視を行いたい時に使えるのがこれ。まぁ普通に通知機能とかついてるから使い…