hero image

日拱一卒,奇客雷

致敬每一个正在学习的你

东方数据 App
千万散户的数据中心
推广大师 App
让碎片化的时间,为自己的事业舔砖加瓦
夜涩美图 App
爬虫、后台、跨平台技术学习
太原东方盛慧科技有限公司用户协议

生效日期 2024年1月18日

更新日期 2024年12月10日

欢迎您注册动点预约账号并使用动点预约的服务!

本《动点预约用户服务协议》(以下简称“本服务协议”)是您与动点预约之间就注册动点预约用户账号及使用动点预约的各项服务等相关事宜所订立的协议。为使用动点预约的服务,您应当仔细阅读并遵守本服务协议下的全部内容,特别是涉及免除或者责任限制的条款,该类条款可能以黑体加粗或加下划线的形式提示您重点注意。除非您已阅读并接受本服务协议所有条款,否则您将不能注册动点预约账号或使用动点预约的服务,如您不同意本服务条款的任意内容,请勿注册或使用动点预约的服务,并应立即停止注册程序。如您对本服务协议的内容(特别是涉及免除或者责任限制的条款)有任何疑义,可随时按照本服务协议中列明的联系方式与我们联系,我们将根据您的要求为您进一步解释和说明相关内容。如您勾选“我同意《动点预约用户服务协议》”并通过注册程序或其他任何方式使用或接受动点预约的任何服务,即视为您已阅读并同意本服务协议,自愿接受本服务协议的所有内容的约束。请您在决定注册或使用服务前再次确认您已知悉并完全理解本服务协议的所有内容。


大约 30 分钟
太原东方盛慧科技有限公司隐私保护政策

生效日期 2023年7月11日

更新日期 2023年7月11日

前言

太原东方盛慧科技有限公司(以下统称"东方盛慧"或者"我们")非常重视用户的隐私和个人信息保护。您在使用我们的产品和服务时,我们可能会收集和使用您的相关信息。我们希望通过本《隐私保护政策》(以下简称"本政策"或者"本隐私政策")向您说明在您接受我们的产品服务时,我们如何收集、使用、储存、共享和转让这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。

我们深知个人信息对您的重要性,并会尽力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原则、最少够用原则、确保安全原则、主体参与原则、公开透明原则等。同时,我们承诺,我们将按业界成熟的安全标准,采取相应的安全保护措施来保护您的个人信息。


大约 36 分钟

做过原生开发的多少会有一些小困扰,下面的常见布局问题应该都会碰到,可注意

  1. Row中嵌套放入TextField、TextView

需要Expanded包裹

  1. Column等中嵌套ListView ListView需要Expanded包裹
  2. Container设置背景 color 和 decoration只能二选一 4.scrollview嵌套webview

东方盛慧科技小于 1 分钟
ffmpeg系列二:用ffmpeg裁剪压缩图片

ffmpeg系列二:用ffmpeg裁剪压缩图片

发布App,或者网络上传资料经常需要上传指定格式或大小的图片,身为程序员,网络工具虽多,但不能一劳永逸,总是麻烦,使用ffmpeg,一劳永逸,既熟悉了ffmpeg使用,也给自己多添了一份技能。

下面测试命令中image_source 是要处理的输入文件,out_source是处理完成之后的输出文件

1. 图片压缩:ffmpeg可以很完美的压缩图片生成新图片,并可以设置压缩等级:


ffmpeg -i image_source -q compress_level out_source
#compress_level:压缩等级为正整数,数值越大压缩等级越高


东方盛慧科技大约 3 分钟工具集ffmpeg其它
Flutter使用脚本打包

Flutter使用脚本打包

#!/bin/sh

# 使用方法:
# step1: 将该脚本放在工程的根目录下(跟.xcworkspace文件or .xcodeproj文件同目录)
# step2: 根据情况修改下面的参数
# step3: 打开终端,执行脚本。(输入sh,然后将脚本文件拉到终端,会生成文件路径,然后enter就可)

# =============项目自定义部分(自定义好下列参数后再执行该脚本)=================== #

# 是否编译工作空间 (例:若是用Cocopods管理的.xcworkspace项目,赋值true;用Xcode默认创建的.xcodeproj,赋值false)
is_workspace="true"

# .xcworkspace的名字,如果is_workspace为true,则必须填。否则可不填
workspace_name=""

# .xcodeproj的名字,如果is_workspace为false,则必须填。否则可不填
project_name=""

# 指定项目的scheme名称(也就是工程的target名称),必填
scheme_name=""

# 指定要打包编译的方式 : Release,Debug。一般用Release。必填
build_configuration="Release"

# method,打包的方式。方式分别为 development, ad-hoc, app-store, enterprise 。必填
method="enterprise"


#  下面两个参数只是在手动指定Pofile文件的时候用到,如果使用Xcode自动管理Profile,直接留空就好
# (跟method对应的)mobileprovision文件名,需要先双击安装.mobileprovision文件.手动管理Profile时必填
mobileprovision_name=""

# 项目的bundleID,手动管理Profile时必填
bundle_identifier=""


echo "--------------------脚本配置参数检查--------------------"
echo "\033[33;1mis_workspace=${is_workspace} "
echo "workspace_name=${workspace_name}"
echo "project_name=${project_name}"
echo "scheme_name=${scheme_name}"
echo "build_configuration=${build_configuration}"
echo "bundle_identifier=${bundle_identifier}"
echo "method=${method}"
echo "mobileprovision_name=${mobileprovision_name} \033[0m"


# =======================脚本的一些固定参数定义(无特殊情况不用修改)====================== #

# 获取当前脚本所在目录
script_dir="$( cd "$( dirname "$0"  )" && pwd  )"
# 工程根目录
project_dir=$script_dir

# 时间
DATE=`date '+%Y%m%d_%H%M%S'`
# 指定输出导出文件夹路径
export_path="$project_dir/Package/$scheme_name-$DATE"
# 指定输出归档文件路径
export_archive_path="$export_path/$scheme_name.xcarchive"
# 指定输出ipa文件夹路径
export_ipa_path="$export_path/"
# 指定输出ipa名称
ipa_name="${scheme_name}_${DATE}"
# 指定导出ipa包需要用到的plist配置文件的路径
export_options_plist_path="$project_dir/ExportOptions.plist"


echo "--------------------脚本固定参数检查--------------------"
echo "\033[33;1mproject_dir=${project_dir}"
echo "DATE=${DATE}"
echo "export_path=${export_path}"
echo "export_archive_path=${export_archive_path}"
echo "export_ipa_path=${export_ipa_path}"
echo "export_options_plist_path=${export_options_plist_path}"
echo "ipa_name=${ipa_name} \033[0m"

# =======================自动打包部分(无特殊情况不用修改)====================== #

echo "------------------------------------------------------"
echo "\033[32m开始构建项目  \033[0m"
# 进入项目工程目录
cd ${project_dir}

# 指定输出文件目录不存在则创建
if [ -d "$export_path" ] ; then
    echo $export_path
else
    mkdir -pv $export_path
fi

# 判断编译的项目类型是workspace还是project
if $is_workspace ; then
# 编译前清理工程
xcodebuild clean -workspace ${workspace_name}.xcworkspace \
                 -scheme ${scheme_name} \
                 -configuration ${build_configuration}

xcodebuild archive -workspace ${workspace_name}.xcworkspace \
                   -scheme ${scheme_name} \
                   -configuration ${build_configuration} \
                   -archivePath ${export_archive_path}
else
# 编译前清理工程
xcodebuild clean -project ${project_name}.xcodeproj \
                 -scheme ${scheme_name} \
                 -configuration ${build_configuration}

xcodebuild archive -project ${project_name}.xcodeproj \
                   -scheme ${scheme_name} \
                   -configuration ${build_configuration} \
                   -archivePath ${export_archive_path}
fi

#  检查是否构建成功
#  xcarchive 实际是一个文件夹不是一个文件所以使用 -d 判断
if [ -d "$export_archive_path" ] ; then
    echo "\033[32;1m项目构建成功 🚀 🚀 🚀  \033[0m"
else
    echo "\033[31;1m项目构建失败 😢 😢 😢  \033[0m"
    exit 1
fi
echo "------------------------------------------------------"

echo "\033[32m开始导出ipa文件 \033[0m"


# 先删除export_options_plist文件
if [ -f "$export_options_plist_path" ] ; then
    #echo "${export_options_plist_path}文件存在,进行删除"
    rm -f $export_options_plist_path
fi
# 根据参数生成export_options_plist文件
/usr/libexec/PlistBuddy -c  "Add :method String ${method}"  $export_options_plist_path
/usr/libexec/PlistBuddy -c  "Add :provisioningProfiles:"  $export_options_plist_path
/usr/libexec/PlistBuddy -c  "Add :provisioningProfiles:${bundle_identifier} String ${mobileprovision_name}"  $export_options_plist_path


xcodebuild  -exportArchive \
            -archivePath ${export_archive_path} \
            -exportPath ${export_ipa_path} \
            -exportOptionsPlist ${export_options_plist_path} \
            -allowProvisioningUpdates

# 检查ipa文件是否存在
if [ -f "$export_ipa_path/$scheme_name.ipa" ] ; then
    echo "\033[32;1mexportArchive ipa包成功,准备进行重命名\033[0m"
else
    echo "\033[31;1mexportArchive ipa包失败 😢 😢 😢     \033[0m"
    exit 1
fi

# 修改ipa文件名称
mv $export_ipa_path/$scheme_name.ipa $export_ipa_path/$ipa_name.ipa

# 检查文件是否存在
if [ -f "$export_ipa_path/$ipa_name.ipa" ] ; then
    echo "\033[32;1m导出 ${ipa_name}.ipa 包成功 🎉  🎉  🎉   \033[0m"
    open $export_path
else
    echo "\033[31;1m导出 ${ipa_name}.ipa 包失败 😢 😢 😢     \033[0m"
    exit 1
fi

# 删除export_options_plist文件(中间文件)
if [ -f "$export_options_plist_path" ] ; then
    #echo "${export_options_plist_path}文件存在,准备删除"
    rm -f $export_options_plist_path
fi

# 输出打包总用时
echo "\033[36;1m使用AutoPackageScript打包总用时: ${SECONDS}s \033[0m"

exit 0


东方盛慧科技大约 3 分钟flutterflutterios
ChatGpt帮助解决滑动相关控件问题

ChatGpt帮助解决滑动相关控件问题

一、下面是问的几个问题

  1. nestedscrollview 中放入 column overflow
  2. nestedscrollview中放入CustomScrollView
  3. flutter CustomScrollview中放入PageView
  4. flutter pageview自适应高度
  5. NestedScrollview 中Container内部单独滑动
  6. NestedScrollView中的 Container内部单独滑动
  7. SingleChildScrollView 使用ConstrainedBox
  8. Expanded 中放入singlechildscrollview
  9. SingleChildScrollView中放入Html
  10. expanded 中放入singlechildscrollview
  11. nestedscrollview中放入 singlechildscrollview
  12. 如何利用NestedScrollView中的controller属性来控制子singlechildscrollview的滚动行为。
  13. nestedscrollview singlechildscrollview customscrollview区别
  14. CustomScrollview中放入PageView
  15. CustomScrollview 嵌套CustomScrollView
  16. SliverFillViewport 中放入TabbarView
  17. ScrollController not attached to any scroll views. 怎么解决
  18. ScrollController 需要释放吗
  19. 怎么知道ScrollController是否被附加到别的组件上

东方盛慧科技大约 17 分钟flutterflutterchatgpt
ffmpeg系列一:用ffmpeg将视频转成gif动图

ffmpeg系列一:用ffmpeg将视频转成gif动图

写博客,考虑经常要录屏制作gif动图,找了几个软件都不尽如人意,干脆直接上ffmpeg吧

1. 首先就是将一个视频直接转成gif动图,基本命令格式如下:

ffmpeg -i 你的视频文件.mp4 生成的文件名.gif  

东方盛慧科技大约 3 分钟工具集ffmpeg其它
jenkins启动关闭脚本

jenkins启动关闭脚本

启动脚本

#!/bin/bash
java -jar /usr/local/jenkins/jenkins.war --httpPort=8080 --enable-future-java &2> jenkins.log


东方盛慧科技小于 1 分钟工具集其它jenkins
2
3
4
5
...
7